MessageViewController icon indicating copy to clipboard operation
MessageViewController copied to clipboard

Insets not respecting tabBarController height

Open siefix opened this issue 5 years ago • 2 comments

Repost of #70

Is there any way to make MessageViewController respect the tabBar (if you have one?)

The only way I found for it to adjust for the tab bar is with tabBarController?.tabBar.isHidden = true

However if you use something like (animatable) tabBarController?.tabBar.frame.origin = CGPoint(x: 0, y: frameHeight - tabBarHeight)

The messageView will still show the extra 49pts of tabbarheight

As shown in the below photo, when I used tabBarController?.tabBar.frame.origin = CGPoint(x: 0, y: frameHeight - tabBarHeight)

The message view is

135pt (34pt safe area + 49pt tab bar + [52pt messageView.textInputView]) when it should be 86pt (34pt safe area + [52pt messageView.textInputView])

To make it work temporarily I edited MessageViewController (which I know I shouldn't!)

internal var safeAreaAdditionalHeight: CGFloat {
        switch keyboardState {
            //EDITED
        case .hiding, .resigned: return view.util_safeAreaInsets.bottom - (49) //EDITED TO ACCOUNT FOR TABBAR
        case .showing, .visible: return 0
        }
    }

img_6de3d86531b8-1

siefix avatar Sep 13 '18 16:09 siefix

Is the error that the tab bar insets are being added in the safe area insets method? Like the tab height is included in the inset bottom?

Sent with GitHawk

rnystrom avatar Sep 13 '18 20:09 rnystrom

Yes I think so.

When I print(view.safeAreaInsets.bottom) in override func viewDidLayoutSubviews() it returns 83.0 (on iPhone X)

I guess this kind of makes sense since collectionView's/etc. natively respect top NavigationBar and TabBar insets.

You have to do something like collectionView.contentInsetAdjustmentBehavior = .never to turn that off. So not sure if you'd have to do something similar to the inputAccessoryView?

siefix avatar Sep 13 '18 21:09 siefix