关于 iOS 13的一些适配问题

1、关于UITabBarItem字体颜色问题

UITabBarItem * barItem = [UITabBarItem appearance];
///统一设置
UIFont * font =[UIFont systemFontOfSize:10];
NSString * title = @"";
///未被选中
NSDictionary * dicNormal = nil;
UIImage * normalimage = [UIImage imageNamed:@"xxx.png"];
///如果图标被转为蓝色 需要此方法
normalimage = [[[UIImage alloc]initWithCGImage:normalimage.CGImage scale:3 orientation:UIImageOrientationUp]  imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
dicNormal = [NSDictionary dictionaryWithObjectsAndKeys:[UIColor redColor],NSForegroundColorAttributeName, font, NSFontAttributeName, nil];

 ///被选中
NSDictionary * dicSelected = nil;
UIImage *  selectedImage = [UIImage imageNamed:@"xxx.png"];
selectedImage = [[[UIImage alloc]initWithCGImage:selectedImage.CGImage scale:3 orientation:UIImageOrientationUp]  imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
dicSelected = [NSDictionary dictionaryWithObjectsAndKeys:[UIColor blackColor], NSForegroundColorAttributeName, font, NSFontAttributeName, nil];

barItem = [[UITabBarItem alloc] initWithTitle:title image:normalimage selectedImage:selectedImage];
[barItem setTitleTextAttributes:dicSelected forState:UIControlStateSelected];
[barItem setTitleTextAttributes:dicNormal forState:UIControlStateNormal];

if (@available(iOS 13.0, *)) {
   self.tabBar.tintColor  //被选中的颜色  
   self.tabBar.unselectedItemTintColor ///为被选中的颜色
} else {
}

2、关于presentViewController 不会全屏

升级iOS后 创建新的ViewController的时候不会默认把modalPresentationStyle设为UIModalPresentationFullScreen需要手动将推出的ViewController的modalPresentationStyle设为UIModalPresentationFullScreen

        TestViewController * vc = [[TestViewController alloc]init];
        vc.modalPresentationStyle = UIModalPresentationFullScreen;
        [self presentViewController:vc animated:YES completion:nil];

3、关于cell设置accessoryType 显示箭头 出现边框问题

针对这个问题 目前好像没有一个明确的解决方法
方法1:如果可以 尽量在iOS 13中不显示箭头 或者自定义cell添加箭头

        if (@available(iOS 13.0, *)) {
            cell.accessoryType = UITableViewCellAccessoryNone;
        } else {
            cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
        }

方法2 :修改cell的accessoryView 其实这也是一种自定义的方式

        if (@available(iOS 13.0, *)) {
            UIImageView * arrowIcon = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"箭头图标名称"]];
            cell.accessoryView = arrowIcon;
        } else {
            cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
        }

4、关于LaunchImage的设置

在iOS13 以前 我们设置LaunchImage 只需要将这个设置在Launch Screen File就可以了
LaunchScreen.storyboard 和 LaunchImage 都可以共享Launch Screen File的设置。
但是在iOS13的时候 你会发现在Launch Screen File中设置了LaunchImage 并没有什么用
解决方法 在Build Settings 中设置


image.png

5、关于暂时不适配深色模式

如果您的项目暂时不想适配深色模式的话解决方法
在info.plist中添加一个
UIUserInterfaceStyle 值为 UIUserInterfaceStyleLight

6、状态栏字体颜色

在iOS13以前UIStatusBarStyleDefault默认是状态栏字体颜色为黑色,但是在iOS13以后可能无效
而UIStatusBarStyleLightContent依然有效
13后新增了一个UIStatusBarStyleDarkContent 所以 我们如果需要适配状态栏字体颜色 需要进行如下操作

    ///如果是需要设置为黑色 需要进行如下判断
    if (@available(iOS 13.0, *)) {
        [self setStatusBarStyle:UIStatusBarStyleDarkContent];
    }else{
        [self setStatusBarStyle:UIStatusBarStyleDefault];
    }

你可能感兴趣的:(关于 iOS 13的一些适配问题)