个人总结1

一,UITableViewStyleGrouped与UITableViewStyleplain的区别:

1)如果设置了分组,那么UITableViewStyleGrouped就会有分组样式,有header也有footer 的区分,但是UITableViewStyleplain却没有区分左图为UITableViewStyleGrouped 


2)UITableViewStyleplain顶部有滞留效果,详情参考https://blog.csdn.net/rodulf/article/details/52967447

如何解决UITableViewStyleplain顶部滞留的一个问题?

答:- (void)scrollViewDidScroll:(UIScrollView *)scrollView {

    CGFloat sectionHeaderHeight = 30;

    if (scrollView.contentOffset.y<=sectionHeaderHeight&&scrollView.contentOffset.y>=0) {

        scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0);

    } else if (scrollView.contentOffset.y>=sectionHeaderHeight) {

        scrollView.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, 0, 0, 0);

    }

}

二.iOS11的变化

1)如果不写tableviewcell的代理方法 viewForHeaderInSection和viewForFooterInSection那么设置heightForFooterInSection和heightForHeaderInSection是无效的,如果不去实现iewForHeaderInSection和viewForFooterInSection这两个方法,需要把estimatedRowHeight,estimatedSectionHeaderHeight,estimatedSectionFooterHeight设置为0;

2)iOS11之前statusBar + NavigationBar为64 ,iOS11之后如果设置了prefersLargeTitles=yes则为96PT,如果不设置大标题,默认还是64,但在iPhoneX上由于刘海的出现statusBar由以前的20pt变成了44pt,所以iPhoneX上高度变为88pt

3)对titleView布局的影响,textfield或者searchBar设置

成titleView会出现变短的问题,无论如何设置width,都无济于事

原因:这是因为iOS11之前titleView也是直接添加在UINavigationBar上面的,但是在iOS11之后,因为largeTitle的原因,视图层级发生了变化

titleView和navigationBarButton都加在了_UINavigationBarContentView上面

解决办法:对titleview 重写intrinsicContentSize方法

4)MJRefresh错位等 使用UIScrollview的控件的页面造成的页面错位self.myTableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;

三,iPhoneX适配指南:

1)基本属性:启动图尺寸 375*812pt @3x

导航栏+状态栏 = 88 (导航栏高度仍是44个点,状态栏高度增高为44个点,所以刘海的高度并不是状态栏的高度。状态栏和导航栏平分了头部总的高度) tabbar高度:83.0个点(原是固定49个点,增高了34个点。所以)

2)替换写死的状态栏高度20 导航栏44  和64。安全起见替换写死的tabbar高度49:

1 - (CGFloat)tabbarHeight{

2     return self.tabBarController.tabBar.frame.size.height;  

3 }  

4   

5 - (CGFloat)navigationBarHeight{  

6     return self.navigationController.navigationBar.frame.size.height;  

7 }  

8   

9 - (CGFloat)naviBarAndStatusBarHeight{  

10     CGFloat height = self.navigationController.navigationBar.frame.size.height + [UIApplication sharedApplication].statusBarFrame.size.height;  

11     return height;  

12 }  

你可能感兴趣的:(个人总结1)