内容简介:1、Multiple commands produce 'xxx/Info.plist'2、3、
1、Multiple commands produce 'xxx/Info.plist'
2、 iOS 12
系统 WiFi
获取 SSID
(wifi名称)和 BSSID
(mac地址)失败
3、 Xcode 10
中 #import
的时候闪退或导入头文件不提示
4、[ Xcode 10
] library not found for -lstdc++.6.0.9
5、[ iOS 12.1
] 二级页面返回时 tabbar
图标和文字位置偏移
6、 webView
播放视频返回后状态栏消失
7、[ iPhone X
] StatusBar
内部结构改变导致 crash
文章来自于我的简书:原文在这里
-
1、Multiple commands produce 'xxx/Info.plist'
升级
Xcode 10之后,编译之前的项目,发生编译错误:Multiple commands produce 'xxx/Info.plist',项目中存在重复命名的info.plist文件。解决方案:
(I)标准方案:删除所有重复命名的文件。
(II)临时方案:
xcworkspace项目:Xcode菜单栏File->Workspace Settings->Build System->Legacy Build System;xcodeprj项目:Xcode菜单栏File->Project Settings->Build System->Legacy Build System。 -
2、
iOS 12系统WiFi获取SSID(wifi名称)和BSSID(mac地址)失败在
iOS 12系统之后,苹果提升了获取WiFi名称和mac地址的权限控制,要获取这些信息,需要手动为应用打开获取WiFi信息的权限。具体操作可以参考《 获取iOS设备WiFi名字和mac地址+iOS12系统获取失败解决 》。解决方案:
在开发者账号中,勾选项目的
App ID的Access WiFi Infomation选项;在Xcode的
Capabilities中,勾选项目的Access WiFi Infomation选项。 -
3、
Xcode 10中#import的时候闪退或导入头文件不提示在
Xcode 10中出现输入#import引入文件/类库头文件的时候Xcode闪退。或者输入#import导入头文件时不提示。解决方案:
xcworkspace项目:Xcode菜单栏File->Workspace Settings->Build System->Legacy Build System;xcodeprj项目:Xcode菜单栏File->Project Settings->Build System->Legacy Build System。 -
4、[
Xcode 10] library not found for -lstdc++.6.0.9苹果在
Xcode 10和iOS 12中移除了libstdc++库,由libc++这个库取而代之,苹果的解释是libstdc++已经标记为废弃有5年了,建议大家使用经过了llvm优化过并且全面支持C++11的libc++库。所以Xcode 10中libstdc++相关的3个库(libstdc++、libstdc++.6、libstdc++6.0.9)都已被移除,不可再使用。解决方案:
(I)调整代码为依赖libc++
更改c++库文件,
TARGETS->Build Phases->Link Binary With Libraries,删除stdc++.6.0.9依赖,添加libc++.tdb;TARGETS->Build Settings->Other Linker Flags,删除-l "stdc++.6.0.9"。修改代码为依赖libc++。(II)从
Xcode 9中导入libstdc++到Xcode 10中。找到
Xcode 9中的libstdc++库文件copy到Xcode 10的lib文件夹下。参考路径方法如下,分别是真机和模拟器的运行库文件导入:cp /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/libstdc++.* /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/ cp /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/libstdc++.* /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/ 复制代码
-
5、[
iOS 12.1] 二级页面返回时tabbar图标和文字位置偏移iOS 12.1系统中UINavigationController+UITabBarController,UITabBar为磨砂,并且pushViewController的时候使用hidesBottomBarWhenPushed = YES,则在使用popViewController:animated返回,或者手势返回的时候,就会出现tabbar布局错乱,图标和文字位置偏移的问题。出现这个问题的直接原因是UITabBar为磨砂的情况下,返回页面时tabBar内的按钮UITabBarButton被设置了错误的frame,frame.size变为了 (0, 0) 。最简单的解决方案是:
[[UITabBar appearance].translucent = NO; 复制代码
-
6、
webView播放视频返回后状态栏消失视频播放完成主
window成为KeyWindow的时候仍隐藏着UIStatusBar。解决方案:
- (void)videoPlayerFinishedToShowStatusBar { if (@available(iOS 12.0, *)) { [[NSNotificationCenter defaultCenter] addObserverForName:UIWindowDidBecomeKeyNotification object:self.window queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * _Nonnull note) { [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone]; }]; } } 复制代码 -
7、[
iPhone X]StatusBar内部结构改变导致crash
苹果17年底推出全面屏刘海手机之后,应用顶部
StatusBar内部结构发生改变,如果项目中使用状态栏中图标获取手机状态信息(如:获取当前网络的状态),则在iPhone X (Xs,Xs Max,XR)手机上会发生崩溃。注意:发生崩溃的机型是有刘海的手机
iPhone X (Xs,Xs Max,XR)。 例如获取当前网络状态。crash log: *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIStatusBar_Modern 0x7ffbf2c05670> valueForUndefinedKey:]: this class is not key value coding-compliant for the key foregroundView.' 复制代码
导致上面崩溃的代码如下:
- (NSString *)getiPhoneNetWorkStates { UIApplication *app = [UIApplication sharedApplication]; NSString *states = @"UnKnow"; NSArray *subViews = [[[app valueForKeyPath:@"statusBar"] valueForKeyPath:@"foregroundView"] subviews]; for (id child in subViews) { if ([child isKindOfClass:NSClassFromString(@"UIStatusBarDataNetworkItemView")]) { int networkType = [[child valueForKeyPath:@"dataNetworkType"] intValue]; NSString *networkStatus = @"UnKnow"; switch (networkType) { case 0: networkStatus = @"UnKnow"; break; case 1: networkStatus = @"2G"; break; case 2: networkStatus = @"3G"; break; case 3: networkStatus = @"4G"; break; case 4: networkStatus = @"LTE"; break; case 5: networkStatus = @"WiFi"; break; default: break; } } } return states; } 复制代码导致崩溃的原因是:
StatusBar内部结构发生变化,在上面代码第5行获取foregroundView的时候,foregroundView不存在。解决方案:
iPhone X上通过StatusBar只能获取到网络是WiFi还是蜂窝网,当网络为蜂窝网的时候,无法获取到具体的网络状态。要获取更具体的网络状况,建议使用官方提供的Reachability。
- (NSString *)getiPhoneNetWorkStates { UIApplication *app = [UIApplication sharedApplication]; NSString *states = @"UnKnow"; id statusBar = [app valueForKeyPath:@"statusBar"]; if ([self checkDeviceIsiPhoneX]) { if ([statusBar isKindOfClass:NSClassFromString(@"UIStatusBar_Modern")]) { id curData = [statusBar valueForKeyPath:@"statusBar.currentData"]; BOOL wifiEnable = [[curData valueForKeyPath:@"_wifiEntry.isEnabled"] boolValue]; BOOL cellEnable = [[curData valueForKeyPath:@"_cellularEntry.isEnabled"] boolValue]; // iPhone X上通过StatusBar只能获取到网络是WiFi还是蜂窝网 // 当网络为蜂窝网的时候,无法获取到具体的网络状态 if (wifiEnable) { states = @"WiFi"; } else if (cellEnable) { states = @"Cellular"; } } } else { NSArray *subViews = [[statusBar valueForKeyPath:@"foregroundView"] subviews]; for (id child in subViews) { if ([child isKindOfClass:NSClassFromString(@"UIStatusBarDataNetworkItemView")]) { int networkType = [[child valueForKeyPath:@"dataNetworkType"] intValue]; switch (networkType) { case 0: states = @"UnKnow"; break; case 1: states = @"2G"; break; case 2: states = @"3G"; break; case 3: states = @"4G"; break; case 4: states = @"LTE"; break; case 5: states = @"WiFi"; break; default: break; } } } } return states; } 复制代码
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Android刘海屏适配历程,兼容Android8.0
- 微信模块 Oejia_wx v0.6.3 发布,多项兼容优化,即将全面适配 Odoo14
- flutter 屏幕尺寸适配 字体大小适配
- 前端适配:移动端/web端适配方案
- iOS 关于全面屏适配的方案及UI在不同尺寸下适配方案
- iOS 关于全面屏适配的方案及UI在不同尺寸下适配方案
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Head First HTML and CSS
Elisabeth Robson、Eric Freeman / O'Reilly Media / 2012-9-8 / USD 39.99
Tired of reading HTML books that only make sense after you're an expert? Then it's about time you picked up Head First HTML and really learned HTML. You want to learn HTML so you can finally create th......一起来看看 《Head First HTML and CSS》 这本书的介绍吧!