美文网首页
iOS 6 和iOS7的适配

iOS 6 和iOS7的适配

作者: Delevan_QAQ | 来源:发表于2016-04-05 10:00 被阅读189次

一、没有包装任何导航控制器或者UITabBarController

1.控制器的view是UIScrollView/UITableView/UICollectionView时(控制器是UITableViewController的时候)

- (void)viewDidLoad

{

[superviewDidLoad];

// #ifdef __IPHONE_7_0是判断是否运行在Xcode5环境下,如果在Xcode5环境下才有下面的代码

#ifdef __IPHONE_7_0

if([[UIDevice currentDevice].systemVersion floatValue] >=7.0) {

self.tableView.contentInset = UIEdgeInsetsMake(20,0,0,0);

}

#endif

}

2.控制器的view是普通的UIView,非UIScrollView

#ifdef __IPHONE_7_0

- (void)viewDidLayoutSubviews

{

// iOS7 &&没有包装导航控制器

if([[UIDevice currentDevice].systemVersion floatValue] >=7.0&&self.navigationController ==nil) {

CGFloat top = [self.topLayoutGuide length];

//是否能滚动

if([self.view isKindOfClass:[UIScrollView class]]) {

UIScrollView *scroll = (UIScrollView *)self.view;

scroll.contentInset = UIEdgeInsetsMake(top, scroll.contentInset.left, scroll.contentInset.bottom, scroll.contentInset.right);

}else{

CGRect bounds =self.view.bounds;

bounds.origin.y =- top;

self.view.bounds = bounds;

}

}

}

#endif

二、包装有导航控制器的情况

1>控制器的view不是UIScrollView

#ifdef __IPHONE_7_0

if([[UIDevice currentDevice].systemVersion floatValue] >=7.0) {

self.edgesForExtendedLayout = UIRectEdgeNone;

}

#endif

2>控制器的view是UIScrollView

不需要写额外的代码适配

三、其他情况(上述情况不用死机,只要掌握以下几点规律)

1.想让view的内容往下挪动

1> UIView设置bounds的y值

2> UIScrollView设置contentInset的top值

2.防止子控制器的view被导航栏或者tabbar遮住

self.edgesForExtendedLayout = UIRectEdgeNone;

四、多控制器嵌套处理

1.当多重控制器嵌套的时候,最合理的方案是:UITabBarController内部嵌套UINavigationController

2.当UITableViewController的直接父控制器是UINavigationController时,不需要编写任何适配代码

3.其他非UITableViewController需要加上适配代码

#ifdef __IPHONE_7_0

if([[UIDevice currentDevice].systemVersion floatValue] >=7.0) {

self.edgesForExtendedLayout = UIRectEdgeNone;

}

#endif

相关文章

  • 适配iOS7的一些坑

    自从Xcode8.0之后,默认不适配iOS7了,最低适配是iOS8。但是有的项目还是要适配iOS7,那必须要装Xc...

  • iOS 6 和iOS7的适配

    一、没有包装任何导航控制器或者UITabBarController 1.控制器的view是UIScrollView...

  • 适配型号

    //适配ios7 if ([[[UIDevice currentDevice] systemVersion] do...

  • iOS关于系统版本问题

    //适配ios7 if( ([[[UIDevice currentDevice] systemVersion] d...

  • 版本适配

    版本适配 5、接触过几个iOS版本,在版本兼容方面有哪些感悟。 接触过iOS6、iOS7、iOS8、iOS9,已经...

  • iOS7适配不当,导致上下有黑框

    iOS7适配不当,导致上下有黑框

  • iOS 进阶之 WKWebView

    前言 Xcode8发布之后,编译器开始不支持 iOS7了.很多应用在适配 iOS10之后都不再适配 iOS7了.最...

  • iOS7中UITextView限制字符的坑

    最近做的app因为涉及到适配iOS7测试阶段遇到了很多的bug,不得不说iOS7适配非常的坑爹,其中UITextV...

  • ASI内存泄漏处理----转

    原文地址 发现问题 iOS7发布后,我们对产品进行了iOS7的适配。适配完成之后的某天,我使用Leaks对产品的新...

  • IOS进阶之WKWebView

    前言 Xcode8发布以后,编译器开始不支持IOS7,所以很多应用在适配IOS10之后都不在适配IOS7了,其中包...

网友评论

      本文标题:iOS 6 和iOS7的适配

      本文链接:https://www.haomeiwen.com/subject/lurplttx.html