关于ios push转场的时候一级界面一些控件会有短暂停留的问题
今天遇到一个问题,这里记录一下,问题描述如标题。
【关于ios push转场的时候一级界面一些控件会有短暂停留的问题】一级页面如下图所示:
文章图片
二级页面如下图所示:
文章图片
跳转过去以后,下面的按钮会有一个短暂的停留,然后才会消失。
后面发现是因为设置self.view的默认位置引起的,因为从ios7以后,navigation controller的view的Y默认是从navigation bar的顶部开始,所以view的所有子控件可能会和你预想的偏差44px,所以我在二级页面中设置了view从navigation bar的底部开始,代码如下:
if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
{
self.edgesForExtendedLayout = UIRectEdgeNone;
}
这里要注意的是edgesForExtendedLayout这个枚举类型
typedef NS_OPTIONS(NSUInteger, UIRectEdge) {
UIRectEdgeNone= 0,
UIRectEdgeTop= 1 << 0,
UIRectEdgeLeft= 1 << 1,
UIRectEdgeBottom = 1 << 2,
UIRectEdgeRight= 1 << 3,
UIRectEdgeAll= UIRectEdgeTop | UIRectEdgeLeft | UIRectEdgeBottom | UIRectEdgeRight
} NS_ENUM_AVAILABLE_IOS(7_0);
如果设置成 self.edgesForExtendedLayout = UIRectEdgeBottom; 那么就会self.view.frame是从navigationBar下面开始计算一直到屏幕底部;
如果设置成 self.edgesForExtendedLayout = UIRectEdgeNone; 那么就会self.view.frame是从navigationBar下面开始计算一直到屏幕tabBar上部;
如果设置成 self.edgesForExtendedLayout = UIRectEdgeTop; 那么就会self.view.frame是从navigationBar上面计算面开始计算一直到屏幕tabBar上部;
所以当我设置为UIRectEdgeNone时,其实二级页面的view是不包含下面高度为44px的这块区域的,在转场的时候才会出现短暂停留的情况。
将self.edgesForExtendedLayout设为UIRectEdgeBottom就可以解决这个问题了。
推荐阅读
- 2020-04-07vue中Axios的封装和API接口的管理
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- 四首关于旅行记忆的外文歌曲
- 醒不来的梦
- iOS中的Block
- 关于自我为中心的一点感想
- 「按键精灵安卓版」关于全分辨率脚本的一些理解(非游戏app)
- 记录iOS生成分享图片的一些问题,根据UIView生成固定尺寸的分享图片
- 关于Ruby的杂想
- 关于读书的思考