iOS 10和Xcode8踩坑记录

作者: lingxuemy | 来源:发表于2016-10-13 09:35 被阅读267次

    权限崩溃问题

    控制台日志:This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSContactsUsageDescription key with a string value explaining to the user how the app uses this data.

    意思是说:你需要在info.plist文件 添加一个“NSContactsUsageDescription ”的Key,Value添加一个描述。

    1,在项目中找到info.plist文件,右击有个 Open As,以Source Code 的形式打开

    2,分别复制 以下 Value 和Key,Key 一定不能错,Value 可以随便填写

    相机权限描述:

    <key>NSCameraUsageDescription</key>
    <string>cameraDesciption</string>
    

    通信录:

    <key>NSContactsUsageDescription</key>
    <string>contactsDesciption</string>
    

    麦克风:

    <key>NSMicrophoneUsageDescription</key>
    <string>microphoneDesciption</string>
    

    相册:

    <key>NSPhotoLibraryUsageDescription</key>
    <string>photoLibraryDesciption</string>
    

    eg:其他权限描述,debug 控制台都会有输出的,自行添加就OK

    xib和storyboard布局显示问题

    使用Xcode8偶然打开了项目中的storyboard文件,然后跑起项目,却发现界面全乱了。或者说界面无法显示等问题。
    经过一番探究后,发现Xcode8对xib和storyboard做出了一些修改,在awakeFromNib和viewDidLoad方法中拿自己拖上去的控件的frame均变成了(0, 0, 1000, 1000),若直接在此使用控件frame进行二次修改,如:修改A控件的宽为B控件的一半,则B控件实际当前的宽是1000,就会造成混乱,或者界面无法显示等。解决办法是在使用原控件frame之前调一次layoutIfNeeded方法。

    最简单的方法就是在viewDidLoad方法中加入[self.view layoutIfNeeded]。

    - (void)viewDidLoad {
        [super viewDidLoad];
        [self.view layoutIfNeeded];    // 调用此方法
        
    }
    

    控制台输出不相关信息

    解决方法:EditScheme -> 左侧Run -> 右侧Arguments -> 下方Environment Variables -> 添加 OS_ACTIVITY_MODE = disable

    http://devhy.com/2016/09/13/13-ios10-and-xcode8-adapt/

    相关文章

      网友评论

      本文标题:iOS 10和Xcode8踩坑记录

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