XZ_iOS之Xcode9的变化和APP界面适配iOS11

来源:互联网 发布:淘宝客活动好报吗 编辑:程序博客网 时间:2024/06/05 11:12

1、LaunchImage中需要添加一个iPhoneX的启动图,尺寸是1125X2436
2、AppIcon中需要添加一个1024x1024的图片
这里写图片描述
3、解决在Xcode8.3.3和Xcode9共存的情况下,使用Xcode9打开工程,但是,模拟器启动不了的情况和模拟器加载不出来,没有模拟器可以选择的情况:
启动不了的解决:在Xcode-Preferences-Locations中,Command Line Tools 选择Xcode9.0;
模拟器加载不出来:Xcode8.3.3可以共存,但是不能同时打开,如果需要在Xcode9上打开应将Xcode8.3.3和模拟器完全退出;
这里写图片描述
4、Xcode9.0的Xcode-Preferences-Locations中”Code folding ribbon” 和“Focus code block on hover”(代码折叠)没有了,
下图是Xcode9的
这里写图片描述
下图是Xcode8的
这里写图片描述
在Xcode9中折叠代码的方法:
1>使用快捷键 (command + option + 左箭头)折叠代码,(command + option + 右箭头)打开代码;
2>将鼠标放在方法名上,然后点击 command 键,会出现下图的代码折叠块
这里写图片描述
然后再点击鼠标左键,会出现下图,点击”Fold”即可折叠代码
这里写图片描述
5、方法的跳转方式的改变,按住command键,点击鼠标左键会出现下图,然后点击Jump to Definition跳转即可
这里写图片描述

如果想要跟之前一样直接跳转到相关的方法,可以在Xcode中设置一下,如下图,这样就跟之前一样可以直接跳转了
这里写图片描述

6、wireless development
即 调试的时候在同一局域网下,支持无线部署调试;
实现方法:打开Xcode,选择Window-Devices and Simulators(或者使用快捷键 Command + shift + 2),勾选Content via network ,当右侧的小球出现时,说明连接成功;
这里写图片描述
7、关于我在项目中遇到的问题以及解决方法:
1>、所有的在viewWillApper的时候隐藏导航栏的页面,头部都下移了40左右,加上下列代码就可以了,
这个代码是全局的,写在哪里都可以,写在appDelegate中就可以

if (@available(ios 11.0,*)) {  UIScrollView.appearance.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;UITableView.appearance.estimatedRowHeight = 0;  UITableView.appearance.estimatedSectionFooterHeight = 0;   UITableView.appearance.estimatedSectionHeaderHeight = 0;  }

2>、下方的tabBar上移是因为启动图里面少了一张1125X2436的启动图;
3>、barButtonItem的图片大小问题:左上角的leftBarButtonItem是一个button,且button的图片是请求的,但是,给button设置了大小并没有起作用,显示的时候还是显示了图片本身的大小,最后只能将图片缩放,然后再赋值了。

UIImage *photo = [UIImage scaleToSize:image size:CGSizeMake(35, 35)];[loginBtn setImage:photo forState:(UIControlStateNormal)];

UIImage的分类中的代码:

+ (UIImage *)scaleToSize:(UIImage *)img size:(CGSize)size{     UIGraphicsBeginImageContextWithOptions(size, YES, [UIScreen mainScreen].scale);    [img drawInRect:CGRectMake(0, 0, size.width, size.height)];    UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();    UIGraphicsEndImageContext();    return scaledImage;}

4>、使用frame设置的tableView页面下移了
解决:使用masonry进行布局

_tableDiscover = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];[self.view addSubview:_tableDiscover];[_tableDiscover mas_makeConstraints:^(MASConstraintMaker *make) {    make.edges.equalTo(self.view);}];

8、在iOS 11中,导航栏新加入了largeTitles和searchController两个新特性
1>、largeTitles包括:prefersLargeTitles和largeTitleDisplayMode,
用法:
self.navigationController.navigationBar.prefersLargeTitles = YES;
self.navigationItem.title = @“导航栏”;
self.navigationItem.largeTitleDisplayMode = UINavigationItemLargeTitleDisplayModeAutomatic;
2>、设置导航栏搜索控制器 searchController
实现需要首先创建一个UISearchController,然后赋值给navigationItem就可以实现将UISearchController集成到Navigation

9、关于在Xcode9中创建xib或者stroyboard,会出先下列错误“error: Illegal Configuration: Safe Area Layout Guide before iOS 9.0”的解决:
取消选择 “Use Safe Area Layout Guides”
这里写图片描述
原因:
苹果在iOS7中引入的Top Layout Guide和Bottom Layout Guide,这些布局指南在iOS 11中被弃用,取而代之的是Safe Area Layout Guide.
当一个viewcontroller 被嵌入到navigationcontroller and tab bar 中时,我们可以使用 Top Layout Guide和Bottom Layout Guide 让view根据上下锚点自适应内容。
在iOS11中苹果用单独的Safe Area属性代替了上面的属性.安全区域限制于顶部和底部的锚点。
可参考:
更多可参考:
WWDC 2017 Session 412 Auto Layout Techniques in Interface Builder

10、在xcassets中添加Color set
这里写图片描述

这里写图片描述
oc调用:
self.view.backgroundColor = [UIColor colorNamed:@”Color”];
swift调用:
view.backgroundColor = UIColor(named:”Color”)

11、Preserve Vector Data属性
给图片添加这个属性之后,当我们在代码中加载图像的时候,如果我们让它显示的尺寸比它本身尺寸大的话,系统在运行时会自动把它放大,且不失真
这里写图片描述

更多的其他适配可以参考以下文章
开发者所需要知道的 iOS 11 SDK 新特性
你可能需要为你的APP适配iOS11

后面会持续更新。。。。

原创粉丝点击