iOS14适配
UIDatePicker 样式默认改变
xcode12 UIDatePicker 需要加入 preferredDatePickerStyle ,并且DatePickerMode必须在UIDatePicker的frame赋值前赋值
//用先前滚动的样式,然后设置frame
if (@available(iOS 13.4, *)) {
[_datePicker setPreferredDatePickerStyle:UIDatePickerStyleWheels];
} else {
}
_datePicker.frame = CGRectMake(0, kTopViewHeight + 0.5, SCREEN_WIDTH, kDatePicHeight);
UITableViewCell(解决:[self addSubview:] 改[self.contentView addSubview:])
在 iOS14 中,UITableViewCell 中如果有直接添加在 cell 上的控件,也就是使用 [self addSubview:] 方式添加的控件,会显示在 contentView 的下层。
contentView 会阻挡事件交互,使所有事件都响应 tableView:didSelectRowAtIndexPath: 方法,如果 customView 存在交互事件将无法响应。如果 contentView 设置了背景色,还会影响界面显示。
相册相关
1、iOS14 新增了“Limited Photo Library Access” 模式,在授权弹窗中增加了 Select Photo 选项。用户可以在 App 请求调用相册时选择部分照片让 App 读取。从 App 的视?来看,你的相册里就只有这几张照片,App 无法得知其它照片的存在。
需要在 Info.plist 中设置 “PHPhotoLibraryPreventAutomaticLimitedAccessAlert”的值为 YES 来阻止该弹窗反复弹出,并且可通过下面这个 API 来主动控制何时弹出PHPickerViewController 进行照片选择。
[[PHPhotoLibrary sharedPhotoLibrary] presentLimitedLibraryPickerFromViewController:self];
2、 在 iOS14 中官方推荐使用 PHPicker 来替代原 API 进行图片选择。PHPicker 为独立进程,会在视图最顶层进行展示,应用内无法对其进行截图也无法直接访问到其内的数据。
需要 由 UIImagePickerController 替换到 PHPickerViewController, UIImagePickerViewController 功能受限,每次只能选择一张图片,将逐渐被废弃。?? PHPicker 支持多选,支持搜索,支持按 image,video,livePhotos 等进行选择。
注意点:在 limit Photo 模式下,AssetsLibrary 访问相册会失败;在 writeOnly 模式下,AssetLibrary 也会有显示问题。建议还在使用 AssetsLibrary 的同学尽快迁移到新 API。
授权相关:旧 API 废弃,增加 PHAccessLevel 参数。如果再使用以前的API来获取权限状态,PHAuthorizationStatusLimited 状态下也会返回 PHAuthorizationStatusAuthorized
[YYImage] iOS 14 YYAnimatedImageView 无法显示正常图片 ([YBImageBrowser]框架有引用,可解决)
没改源码,以防更新,用类别hook了那个方法:displayLayer:
//
//YYAnimatedImageView+swizzling.h
//MBALib
//
//Created by 1 on 2020/9/25.
//Copyright ? 2020. All rights reserved.
//修复yyimage iOS14出现了bug#import "YYAnimatedImageView.h"NS_ASSUME_NONNULL_BEGIN@interface YYAnimatedImageView (swizzling)@endNS_ASSUME_NONNULL_END
//
//YYAnimatedImageView+swizzling.m
//MBALib
//
//Created by 1 on 2020/9/25.
//Copyright ? 2020. All rights reserved.
//#import "YYAnimatedImageView+swizzling.h"
#import @implementation YYAnimatedImageView (swizzling)
+ (void)load
{
Method a = class_getInstanceMethod(self, @selector(displayLayer:));
Method b = class_getInstanceMethod(self, @selector(swizzing_displayLayer:));
method_exchangeImplementations(a, b);
}- (void)swizzing_displayLayer:(CALayer *)layer
{
//通过变量名称获取类中的实例成员变量
Ivar ivar = class_getInstanceVariable(self.class, "_curFrame");
UIImage *_curFrame = object_getIvar(self, ivar);
if (_curFrame) {
layer.contents = (__bridge id)_curFrame.CGImage;
} else {
if (@available(iOS 14.0, *)) {
[super displayLayer:layer];
}
}
}
@end
【iOS14适配】有其他问题,可点下面继续参考:
参考:https://www.cnblogs.com/fakeCoder/p/13722967.html
https://github.com/ibireme/YYImage/issues/149
https://www.jianshu.com/p/bf1c4ad44f5e?utm_campaign=hugo
推荐阅读
- 2019-08-29|2019-08-29 iOS13适配那点事
- Android6.0~9.0适配
- CocoaAsyncSocket|CocoaAsyncSocket (GCDAsyncSocket)适配IPv6
- 20.小程序(布局适配方案(rpx、px、vw、vh))
- iOS14|iOS14 Widget小组件开发(Widget Extension)
- iOS10|iOS10 WKWebView里的视频播放转屏适配
- SpringMVC(6)(注解的处理器映射器和适配器)
- Apache APISIX 2.12.0 版本发布,新功能更适配新一年!
- (移动端适配px转rem)react配置rem插件lib-flexible和postcss-px2rem-exclude
- 超详细的ARM架构适配介绍!