iOS15适配小结

目录
  • 1、tabbar及navicationbar的背景颜色问题
    • 原因:因为设置颜色方法在ios15中失效
    • 解决方法--重新设置相关属性
  • 2、tableview新属性-sectionHeaderTopPadding
    • 使用

1、tabbar及navicationbar的背景颜色问题

问题:从ios14升级到ios15会出现 导航栏背景颜色失效

原因:因为设置颜色方法在ios15中失效

--在iOS13更新的API中新增了针对navigationBar,tabbar分别新增了新的属性专门管理这些滑动时候产生的颜色透明等等信息,由于我们应用兼容iOS10以上,对于导航栏的设置还没有使用UINavigationBarAppearance和UITabBarAppearance,但在更新的iOS15上失效,所以就变得设置失效

//设置navigationBar颜色
self.navigationController.navigationBar.barTintColor = [UIColor blueColor];
//设置tabBar背景色
self.tabBarController.tabBar.backgroundColor = [UIColor blueColor];
//设置tabBarItem字体颜色
NSMutableDictionary<NSAttributedStringKey, id> *normalAttributes = [NSMutableDictionary dictionary];
[normalAttributes setValue:[UIColor blueColor] forKey:NSForegroundColorAttributeName];

[self.tabBarItem setTitleTextAttributes:normalAttributes.copy forState:UIControlStateNormal];
[self.tabBarItem setTitleTextAttributes:normalAttributes.copy forState:UIControlStateSelected];

解决方法--重新设置相关属性

tabBar

UITabBarAppearance *appearance = [[UITabBarAppearance alloc] init];
//tabBaritem title选中状态颜色
appearance.stackedLayoutAppearance.selected.titleTextAttributes = @{
    NSForegroundColorAttributeName:[UIColor blueColor],
};
//tabBaritem title未选中状态颜色
appearance.stackedLayoutAppearance.normal.titleTextAttributes = @{
    NSForegroundColorAttributeName:[UIColor blueColor],
};
//tabBar背景颜色
appearance.backgroundColor = [UIColor blackColor];
self.tabBarItem.scrollEdgeAppearance = appearance;
self.tabBarItem.standardAppearance = appearance;

其中 standardAppearance和scrollEdgeAppearance等的区别

  • standardAppearance --- 常规状态
  • scrollEdgeAppearance --- 小屏幕手机横屏时的状态
  • scrollEdgeAppearance --- 呗scrollview向下拉的状态

navigationBar

UINavigationBarAppearance *appearance = [[UINavigationBarAppearance alloc] init];
appearance.backgroundColor = [UIColor blackColor];
self.navigationBar.standardAppearance = appearance;
self.navigationBar.scrollEdgeAppearance = appearance;

2、tableview新属性-sectionHeaderTopPadding

官方支持

/// Determines if the table view allows its cells to become focused.
/// When tableView:canFocusRowAtIndexPath: is implemented, its return value takes precedence over this method.
/// Defaults to a system derived value based on platform and other properties of the table view.
@property (nonatomic, getter=isPrefetchingEnabled) BOOL prefetchingEnabled

iOS 15中tableView会给每一个section的顶部(header以上)再加上一个22像素的高度,形成一个section和section之间的间距

使用

为了配合以前的开发习惯,我们只需要在创建实例的时候进行对间距的设置即可

if (@available(iOS 15.0, *)) {
    tableView.sectionHeaderTopPadding = 0;
}

或者全局设置

if (@available(iOS 15.0, *)) {
    [UITableView appearance].sectionHeaderTopPadding = 0;
}

到此这篇关于iOS15适配小结的文章就介绍到这了,更多相关iOS15适配内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间: 2021-09-28

iOS文本的多语言适配以及实践指南

目录 背景 字体包的多语言适配和实践 需求分析 技术设计 文本信息的多语言适配和实践 需求分析 技术设计 技术开发 拓展 总结 背景 产品被多个国家使用,产品方希望产品拥有更好的多语言使用体验,所以设计师提供多种字体来适配指定的语言.基于以上背景,客户端需要快速给出解决方案并且上线. 字体包的多语言适配和实践 需求分析 首先,在了解产品需求和设计方案之后,结合业务研发人员的痛点,整理出以下需求. 产品和设计的需求 不同语言,对应字体包不相同. 全局字体默认使用设计师指定的字体包. 某些语言的字体

iOS WKWebView适配实战篇

一.Cookie适配 1.现状 WKWebView适配中最麻烦的就是cookie同步问题 WKWebView采用了独立存储控件,因此和以往的UIWebView并不互通 虽然iOS11以后,iOS开放了WKHTTPCookieStore让开发者去同步,但是还是需要考虑低版本的 同步问题,本章节从各个角度切入考虑cookie同步问题 2.同步cookie(NSHTTPCookieStorage->WKHTTPCookieStore) iOS11+ 可以直接使用WKHTTPCookieStore遍历方

iOS适配iPhone XS、 iPhone XS Max and iPhone XR的方法浅析

前言 Building Apps for iPhone XS, iPhone XS Max, and iPhone XR. 原视频连接 https://developer.apple.com/videos/play/tech-talks/207/ 今天凌晨苹果新发布了三款手机,分别是iPhone XS,iPhone XR,iPHone X Max,其中iPhone XS的屏幕尺寸和iPhone X的是一致的,另外两款都有了新的尺寸,具体尺寸如下: 总结为以下几点: 一.老生常谈的安全区域(Saf

iOS 12适配以及问题小记

前言 本文主要给大家介绍了关于iOS12适配及问题的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 版本信息 Xcode: Version 10.0 beta (10L176w) macOS: 10.14 Beta (18A293u) iOS: 12.0(16A5288q) 问题及解决过程 1,StatusBar内部结构改变 现象:crash crash log: 1,-[_UIStatusBarIdentifier isEqualToString:]: unrecog

iOS13适配深色模式(Dark Mode)的实现

好像大概也许是一年前, Mac OS系统发布了深色模式外观, 看着挺刺激, 时至今日用着也还挺爽的 终于, 随着iPhone11等新手机的发售, iOS 13系统也正式发布了, 伴随着手机版的深色模式也出现在了大众视野 我们这些iOS程序猿也有事情做了, 原有项目适配iOS13系统, 适配Dark Mode深色模式 虽然现在并没有要求强制适配Dark Mode, 但是DarK适配却也迫在眉睫 Apps on iOS 13 are expected to support dark mode Use

iOS13 适配和Xcode11.0踩坑小结

iOS13中presentViewController的问题 更新了Xcode11.0 beta之后,在iOS13中运行代码发现presentViewController和之前弹出的样式不一样. 会出现这种情况是主要是因为我们之前对UIViewController里面的一个属性,即modalPresentationStyle(该属性是控制器在模态视图时将要使用的样式)没有设置需要的类型.在iOS13中modalPresentationStyle的默认改为UIModalPresentationAu

iOS13原生端适配攻略(推荐)

随着iOS 13的发布,公司的项目也势必要着手适配了.现汇总一下iOS 13的各种坑 1. KVC访问私有属性 这次iOS 13系统升级,影响范围最广的应属KVC访问修改私有属性了,直接禁止开发者获取或直接设置私有属性.而KVC的初衷是允许开发者通过Key名直接访问修改对象的属性值,为其中最典型的 UITextField 的 _placeholderLabel.UISearchBar 的 _searchField. 造成影响:在iOS 13下App闪退 错误代码: // placeholderL

IOS 屏幕适配方案实现缩放window的示例代码

背景: 公司有个iPad项目(只支持横屏),是11年开发的,那时的iPad只有1024x768的分辨率,所以没有屏幕适配的问题,frame都是写死的.后来不同尺寸的iPad相继出现,本来应该会出现屏幕不能适配的问题,但是由于该项目没有设置启动图,页面会自动等比例缩放撑满整个屏幕,各分辨率的宽高比相差不多,所以并没有出现太大问题.但是2020年3月4日,苹果要求所有提交至 App Store 的 app 都须使用 Xcode storyboard(故事板) 来提供 app 的启动屏幕,之前的不设置

Xcode 9下适配iPhoneX导致iOS 10不兼容问题的解决方法

前言 前久发现测试组提交来一个 bug,说有的布局在 iOS 11 上正常,在 iOS 10 下不正常.分别在 iOS 11 模拟器和 iOS 10.3 模拟器上跑了一下 app,发现果然如此,如下图所示: iOS 11 下点击"省市广播站",下级菜单中的按钮正常显示: iOS 10 下点击"省市广播站",下级菜单显示为空白: 解决方法 检查代码,发现下级菜单中的按钮是以手动布局方式动态添加到一个 scroll view 中的.添加时指定了按钮的框架,框架计算完全正

Unity3D实验室之iOS真机闪退的解决方法

问题的产生 这个问题一般发生在项目比较大,OO使用良好,泛型继承用的较多的时候.第一次真机测试时,项目终于进入真机测试阶段,之前都是在Unity编辑环境下开发测试,运行的都很良好,信心满满的打包安装,结果闪退...,各种代码调试,跟踪都没什么线索.这怎么办?问题很可能出在了AOT的设置上. 解决方案 这个通常是因为你的程序编译的时候给 trampoline 分配的空间太小,而你的程序中又大量使用了泛型.泛型方法调用和接口实现导致的.具体的解决方法就是在 Unity3D 的编译选项 Player

移动端页面在ios中不显示图片的解决方法

在移动端开发中,有的时候可能遇到这样的问题,我从别人网站上下载下来的图片,然后做出H5页面,但是在浏览器中和android中都显示正常,可是一到ios中图片就不显示了,这个时候就需要注意了,可能是图片的格式问题导致ios中不认识,比如我从网上下载的图片保存到电脑中不能预览的图片就是这种. 在计算机中打开预览图片显示如下: 这样的图片在ios中就不显示,解决办法很简单,就是在下载的时候去掉后面的类型就可以了, 以上这篇移动端页面在ios中不显示图片的解决方法就是小编分享给大家的全部内容了,希望能给

关于django 1.10 CSRF验证失败的解决方法

最近工作闲,没事自学django,感觉这个最烦的就是各版本提供的api函数经常有变化,不是取消了就是参数没有了,网上搜到的帖子也没说明用的是什么版本的django,所以经常出现搬运过来的代码解决不了问题的情况,不过基本上遇到的坑不多,最坑的就是在提交post表单时弄了两天的CSRF验证失败问题,特此记录一下,我用的是django 1.10.3: 如果你不想使用这个功能,直接找到settings.py中的'django.middleware.csrf.CsrfViewMiddleware',这一行

gearman中worker常驻后台,导致MySQL server has gone away的解决方法

本文实例讲述了gearman中worker常驻后台,导致MySQL server has gone away的解决方法.分享给大家供大家参考,具体如下: 产生这个原因主要有如下几点: 1.mysql服务宕机了 2.长时间没有操作,超过了wait_timeout的设置,mysql自动断开 3.mysql请求链接被主动kill 4.发送的请求或返回结果过大,可设置max_allowed_packet的值 5.程序中你都是通过单例来操作数据库,如果两个操作时间超过wait_timeout. 为了演示的

linux系统重装导致免密码key登录失败的解决方法

在一台linux机器上ssh远程另外一台linux服务器时候出现: [root@server .ssh]# ssh 192.0.50.80 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

ios 不支持 iframe 的完美解决方法(兼容iOS&安卓)

最近做微信公众号页面,因为入口不同,需要把公共页面抽取出来,然后根据不同的值,传递给后台不同的入口.刚开始用iframe页面嵌套(第一次尝试使用),但发现iOS系统对iframe嵌套页面的高度和定位控制的不到位,具体表现为,当嵌套的子页面的高度大于父页面的高度,且子页面中有触发弹框事件时,这时,如果子页面高度远远大于父页面高度,就会出现弹框找不到的情况,其实可能是在视口以下,弹框的位置只是相对于子页面来定位,并没有相对于视口定位. 尝试了好多种方法,均不理想,而安卓系统则表现良好,于是想到,iO

iOS蓝牙设备名称缓存问题的解决方法

1. 问题背景 当设备已经在 App 中连接成功后 修改设备名称 App 扫描到的设备名称仍然是之前的名称 App 代码中获取名称的方式为(perpheral.name) 2. 问题分析 当 APP 为中心连接其他的蓝牙设备时. 首次连接成功过后,iOS系统内会将该外设缓存记录下来. 下次重新搜索时,搜索到的蓝牙设备时,直接打印 (peripheral.name),得到的是之前缓存中的蓝牙名称. 如果此期间蓝牙设备更新了名称,(peripheral.name)这个参数并不会改变,所以需要换一种方

Python升级导致yum、pip报错的解决方法

前言 本文主要给大家介绍了因Python升级导致yum.pip报错的解放方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 原因: yum是Python写的.服务器上Python版本过低,升级为2.7,而yum/pip未升级,导致在执行yum/pip时报这个错误. yum报错: There was a problem importing one of the Python modules required to run yum. The error leading to th

IIS下Zend 出现 Unable to view file mapping 问题的解决方法汇总

zend 错误日志中有:Unable to view file mapping, 试图访问无效的地址.网上搜了下解决方法有 解决方法如下: 对比php两个版本的php.ini文件. ;extension=php_yaz.dll;extension=php_zip.dll检查这个两个是否存在新的版本中.同时确认extension=php_zip.dll前面的;去掉保存重启iis和mysql 大功告成 另外一种说法 eAccelerator v0.9.4-rc1, 这个php加速插件,把这个屏蔽掉就