欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-04-11 13:55:48
...

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

如果想要跟之前一样直接跳转到相关的方法,可以在Xcode中设置一下,如下图,这样就跟之前一样可以直接跳转了
XZ_iOS之Xcode9的变化和APP界面适配iOS11

6、wireless development
即 调试的时候在同一局域网下,支持无线部署调试;
实现方法:打开Xcode,选择Window-Devices and Simulators(或者使用快捷键 Command + shift + 2),勾选Content via network ,当右侧的小球出现时,说明连接成功;
XZ_iOS之Xcode9的变化和APP界面适配iOS11
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”
XZ_iOS之Xcode9的变化和APP界面适配iOS11
原因:
苹果在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
XZ_iOS之Xcode9的变化和APP界面适配iOS11

XZ_iOS之Xcode9的变化和APP界面适配iOS11
oc调用:
self.view.backgroundColor = [UIColor colorNamed:@”Color”];
swift调用:
view.backgroundColor = UIColor(named:”Color”)

11、Preserve Vector Data属性
给图片添加这个属性之后,当我们在代码中加载图像的时候,如果我们让它显示的尺寸比它本身尺寸大的话,系统在运行时会自动把它放大,且不失真
XZ_iOS之Xcode9的变化和APP界面适配iOS11

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

后面会持续更新。。。。