wangmchn / WMPageController

An easy solution to page controllers like NetEase News
MIT License
2.92k stars 627 forks source link

tabBar闪现动画 #321

Closed DabbyCHEN closed 7 years ago

DabbyCHEN commented 7 years ago

Xcode / iOS / WMPageController 的版本信息 Xcode8.3.3 / iPhone5s真机 / iOS10.2.1 / WMPageController0.36.4?

项目使用了TabBarController,在首页点击某个按钮,用NavigationController push 出一个WMPageController,我在storyboard中勾选了pageController的Hide Bottom Bar on Push属性,所以在弹出的时候会收起tabbar,这会有个动画,因为设置了背景颜色所以很明显,求帮助。

我百度这个问题,得到一个解决方案:http://www.jianshu.com/p/b44bf10cd4a5 用他的方法,我能解决没有用WMPageController的VC,这些VC就不会有收起动画了,但是在PageController中却没有作用,希望大神能解答下为什么,以及是否有解决方案。

非常感谢!

DabbyCHEN commented 7 years ago

_20170823171322 _20170823171330

DabbyCHEN commented 7 years ago

上面图的顺序反了,会自动收起下面的蓝条,但是这动画挺明显的

wangmchn commented 7 years ago

@DabbyCHEN 可能是WMPageController里面的 self.automaticallyAdjustsScrollViewInsets = NO; 导致的 storyboard用的不多,不太清楚 试试用代码在WMPageController -initWithNib的时候加一个self.HideBottomBaronPush = YES看还会不会有这个问题?

DabbyCHEN commented 7 years ago

我已经在storyboard中设置了这个WMPageController 的Hide Bottom Bar on Push属性为yes,所以他会收下去,但是我想要改的是收下去这个动画。 根据一楼简书的说法:"我的理解是,针对下方控件的上边界,来约束你上放控件的下边界. 如果问题是这样的话,我天真的以为,针对下方控件的下边界来约束不就好了. 这是我从思想上犯的一个错误...且不说跨越了边界,可能造成的混乱...单就是我设置了Hide Bottom Bar on Push 后,其实下方的tabbar对页面来说就不存在了,也是会报错的. 这个时候,就想到针对viewController的view来设置约束, 让上方控件的下边界和view的下边界产生规则,就可以解决这个问题了。" 我的简单理解是:因为我hide了bottomBar,所以在vc push的时候bar已经不再vc上了,但是界面的frame是想根据bottomBar的高度来算,然后发现没有这个view了,就往下推到vc底端。 根据这篇简书,我确实解决了非WMPageController的VC问题,这些push的时候算frame就是superview的frame。 不知道这么描述清楚吗?我想的解决方案是,在WMPageController算frame的时候,手动的加上bottomBar的高度,不知道可不可以。

wangmchn commented 7 years ago
/**
 Implement this datasource method, in order to customize your own contentView's frame
 @param pageController The container controller
 @param contentView The contentView, each is the superview of the child controllers
 @return The frame of the contentView
 */
- (CGRect)pageController:(WMPageController *)pageController preferredFrameForContentView:(WMScrollView *)contentView;

/**
 Implement this datasource method, in order to customize your own menuView's frame

 @param pageController The container controller
 @param menuView The menuView
 @return The frame of the menuView
 */
- (CGRect)pageController:(WMPageController *)pageController preferredFrameForMenuView:(WMMenuView *)menuView;

试试这两个方法是否有用?

ghost commented 7 years ago

@wangmchn @DabbyCHEN 大佬们 方便帮我解决下我的问题吗😭😭😭 #322

DabbyCHEN commented 7 years ago

谢大神,已解决,可以结束了。 在WMPageController.m中的wm_calculateSize方法中,您计算ContentViewFrame时减去了tabBar的高度,所以当我push进去隐藏tabBar时,会往下回缩。我将这句删掉,不减去它的高度就可以了。