UITabBarAppearance 在 iOS15 iPad 上不起作用(标题颜色)

2024-02-22

我创建了一个简单的演示,只创建了一个 UITabBarController 的子类并在故事板中设置。

我想在选择时将 TabBarButtonItem 的标题设置为橙色,在正常情况下将标题设置为黑色。以下代码在 iPhone 上的任何 iOS 版本上都可以正常工作,但在 iOS 15 的 iPad(设备和模拟器)上,所选颜色更改为蓝色和有线正常状态颜色。

这是苹果的错误还是我错过了什么?(我使用的是 Xcode13)

class CustomViewController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let tabBarAppearnace = UITabBarAppearance()
        let tabFont =  UIFont.boldSystemFont(ofSize: 18)
        
        let selectedAttributes: [NSAttributedString.Key: Any]
        = [NSAttributedString.Key.font: tabFont, NSAttributedString.Key.foregroundColor: UIColor.orange]
        let normalAttributes: [NSAttributedString.Key: Any]
        = [NSAttributedString.Key.font: tabFont, NSAttributedString.Key.foregroundColor: UIColor.black]
        
        tabBarAppearnace.stackedLayoutAppearance.normal.titleTextAttributes = normalAttributes
        tabBarAppearnace.stackedLayoutAppearance.selected.titleTextAttributes = selectedAttributes
        
        tabBar.standardAppearance = tabBarAppearnace
    }
}

对于 iPadOS,您必须使用inlineLayoutAppearance属性,因为在 iPad 上,TabBar 中的项目默认情况下内联显示(标题和图标彼此相邻显示)。
但实际上你还应该配置compactInlineLayoutAppearance否则,如果您在 iPhone 上使用横向模式,则您的自定义样式将不适用。

class CustomViewController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let tabBarAppearnace = UITabBarAppearance()
        let tabFont =  UIFont.boldSystemFont(ofSize: 18)
        
        let selectedAttributes: [NSAttributedString.Key: Any]
        = [NSAttributedString.Key.font: tabFont, NSAttributedString.Key.foregroundColor: UIColor.orange]
        let normalAttributes: [NSAttributedString.Key: Any]
        = [NSAttributedString.Key.font: tabFont, NSAttributedString.Key.foregroundColor: UIColor.black]
        
        tabBarAppearnace.stackedLayoutAppearance.normal.titleTextAttributes = normalAttributes
        tabBarAppearnace.stackedLayoutAppearance.selected.titleTextAttributes = selectedAttributes
        
        //New        
        tabBarAppearnace.inlineLayoutAppearance.normal.titleTextAttributes = normalAttributes
        tabBarAppearnace.inlineLayoutAppearance.selected.titleTextAttributes = selectedAttributes

        tabBarAppearnace.compactInlineLayoutAppearance.normal.titleTextAttributes = normalAttributes
        tabBarAppearnace.compactInlineLayoutAppearance.selected.titleTextAttributes = selectedAttributes


        tabBar.standardAppearance = tabBarAppearnace
    }
}

欲了解更多信息:https://developer.apple.com/documentation/uikit/uitabbarappearance https://developer.apple.com/documentation/uikit/uitabbarappearance

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UITabBarAppearance 在 iOS15 iPad 上不起作用(标题颜色) 的相关文章

  • 选择 UITableViewCell 时 UIView 背景颜色消失

    我在界面生成器中构建了一个简单的 tableViewCell 它包含一个包含图像的 UIView 现在 当我选择单元格时 会显示默认的蓝色选择背景 但 UIView 的背景颜色消失了 我的 UITableViewCell 的实现文件没有做任
  • iOS 13 检查 CLLocationManager 的临时授权状态

    根据 WWDC 视频 https developer apple com videos play wwdc2019 705 https developer apple com videos play wwdc2019 705 当你要求 Al
  • iOS WKWebView 处理文件下载

    我面临以下问题 在 Web 界面中 文件下载是通过锚标记触发的 如下所示 a href bla blabla a 虽然 Safari 浏览器可以处理此请求并打开一个对话框来处理文件 但 WKWebView 将此视为普通链接并且不对其执行任何
  • iPhone SQLite页面缓存不断增长

    I use sqlite数据库用于存储 还有许多数据库事务 我的问题是 sqlite 页面缓存的内存使用量快速增长 在instruments我可以找到这条线 Graph Category Live Bytes Living Transien
  • 如何区分 iTunes Connect / Apple TestFlight 上的 STAGE 和 PRODUCTION 版本?

    阶段构建与阶段服务器的对话 阶段服务器与生产服务器尽可能相同 以用于测试目的 生产构建与生产服务器的通信 生产服务器存储真实的关键数据 这些构建本质上是针对同一应用程序的 但是 iTunes Connect 界面将向您显示以下内容 即构建由
  • Swift:检查 UISearchBar.text 是否包含 url

    如何检查 UISearchBar text 是否包含 URL 我想做这样的事情 if searchBar text NSTextCheckingType Link 但我收到错误 String is not convertible to NS
  • 如何编辑应用程序包中的文件?

    在我的应用程序中 我从存储在捆绑资源中的 CSV 文件加载数据 但是 我希望能够在用户点击 更新 按钮时以编程方式更新此文件 有没有办法以编程方式更改应用程序包中的资源 这是我用来访问该文件的代码 NSString path NSBundl
  • Apple Developer 应用程序门户不再可以生成新的 Bundle Seed ID

    iOS 开发者门户中的新界面不再为您的应用程序 ID 提供 生成新的 按钮 取而代之的是 使用团队 ID 这将导致使用相同的种子 ID 任何人都知道为什么要进行更改以及您应该如何使用新的捆绑包种子 ID 随意补一些 不再可能生成新的种子 I
  • 是否可以使用UIPageControl来控制UITableView的移动?

    从Apple示例 PageControl 中我们可以知道UIPageControl可以用来控制scrollview中页面的移动 由于 UITableView 是 UIScrollView 的子类 我想使用 UIPageControl 来控制
  • 为arm64或arm7s编译OpenSSL FIPS功能库时出现未知的cpu类型

    我可以成功 至少没有警告并生成 a 文件 针对 arm7 x86 64 和 i386 进行编译 当我编译arm64时 我得到Unknown cpu type 100000c no adjustments made 当我编译arm7s时 我得
  • 在 Swift 中以编程方式为 iOS 制作带有名字首字母的图像,例如 Gmail

    我需要在 UITableView 中显示与其姓名相对应的每个用户的个人资料图片 在下载图像之前 我需要显示一张带有他名字的第一个字母的图像 就像在 GMail 应用程序中一样 如何在 Swift for iOS 中以编程方式执行此操作 不需
  • 使用 ZBarSDK 时 iPhone 相机失去自动对焦功能

    我正在开发一个应用程序 用户可以选择是否要扫描条形码或拍摄某物的照片 为了拍照 我正在使用UIImagePickerController照常 为了扫描条形码 我使用 ZbarSDK 1 2ZBarReaderViewController 拍
  • cameraOverlayView 防止使用 allowedEditing 进行编辑

    在我的应用程序中 使用以下行在拍摄照片后对其进行编辑 移动和缩放 效果很好 imagePicker setAllowsEditing YES 但如果我还使用cameraOverlayView 则编辑模式将不再起作用 屏幕出现 但平移和捏合手
  • removeItemAtPath 完成

    我正在以这种方式删除路径上的文件 UIPanGestureRecognizer gesture UIPanGestureRecognizer sender UIButton button UIButton gesture view UIPa
  • 如何在Sprite Kit中实现鼠标关节?

    我已经在 iOS 上用 Cocos2d Box2d 编写了拖放功能的工作实现 我需要将它移植到 Sprite Kit 逻辑非常基本 当用户触摸屏幕时 找到手指下的精灵 在找到的精灵和场景的物理体之间创建鼠标关节 将关节的目标设置为触摸位置
  • 在 UITableView 的部分标题文本下方添加一些边距

    我已经设计了标题文本的样式 func tableView tableView UITableView cellForRowAtIndexPath indexPath NSIndexPath gt UITableViewCell let ce
  • cordova插件条码扫描仪打不开扫描

    我的条形码扫描仪插件有问题 我不是天才 我不太了解如何编写网络应用程序 我使用phonegap和cordova 并且尝试制作一个网络应用程序 在单击链接后扫描条形码 我之前已经使用此命令行安装了该插件 cordova plugin add
  • 领域:结果 和列表

    是否可以转换Results
  • WKWebview 中的 iCLoud 文档选择器关闭容器视图

    我有一个 WKWebview 加载基于 Web 的 UI 我希望用户能够从其 iCloud 文档上传文件 我已授予正确的权限 并且可以浏览 iCloud 文档 但是 当我选择文件或单击取消按钮时 文档选择器视图也会关闭 WKWebview
  • 下载进度条在 iOS 企业发行版中没有改变进度

    我正在通过企业分发开发和分发 iPad 应用程序 它们下载并执行良好 因此一切正常 Web 链接 ipa 文件 plist 文件 配置 问题 是 当用户单击链接进行下载时 iPad 中显示下载进度的进度条显示 正在等待 但却是空的并且永远不

随机推荐

  • CSS 图像高度限制为父级 div 高度。父 div 宽度和高度以百分比指定*** [重复]

    这个问题在这里已经有答案了 如何将图像的高度限制为其父容器 其高度以百分比指定 如果图像宽度 高度 gt 父级宽度 高度 我希望图像跨越父级 如果图像宽度 高度 html body width 100 height 100 top heig
  • Cypress:如何测试 HTML5 内置验证弹出窗口?

    在使用 Cypress 测试应用程序时 我们如何捕获 HTML5 内置的弹出验证错误 它似乎没有出现在 DOM 中 所以我不知道如何用 a 来捕获它cy命令 我正在使用testing library 你可以参考柏树FAQ https doc
  • 如何使用 C# 从 Windows 应用程序(而不是 Web)上的系统托盘创建表单弹出窗口

    我有一个 c 中的 winform 应用程序 主窗体通常被最小化 当发生某些事件时 我想创建一个小的弹出表单 在托盘图标上方带有消息的动画 单击它 将弹出主表单 为了实现这一点 我只需创建简单的表单 或者有特殊的系统形式 例如 MSN Me
  • 遍历部分有序集合的方法数

    这是建立在上一个问题的基础上的解决一个简单的有依赖关系的打包组合 https stackoverflow com questions 49948256 solve a simple packing combination with depe
  • getCanonicalHostName 非常慢

    InetAddress getByName ipAddress getLocalHost getCanonicalHostName 上面的代码行大约需要 10 秒来执行 我在etc hosts 文件中添加了IP 和主机名 但仍然没有任何变化
  • 如何获取 .NET 中的类列表

    I tried Assembly ReflectionOnlyLoadFrom path System Core dll 和 ReflectionOnlyLoad 但我遇到了异常和错误 如何正确获取程序集中的所有命名空间 类 例如我得到了这
  • 有没有办法设置窗口以保持控制台窗口打开?

    有没有什么方法可以让它在代码完成后立即停止关闭 以便我可以实际读取终止脚本中的错误消息 我知道可以使用不同语言的各种命令来使其等待用户输入字符 我想问一下有没有办法设置窗口本身使窗口普遍打开或针对特定类型的程序打开 以便可以读取错误消息无需
  • 在用户空间中启用写组合 IO 访问

    我有一个带有用户空间驱动程序的 PCIe 设备 我通过 BAR 向设备写入命令 这些命令对延迟敏感并且数据量很小 64 字节 因此我不想使用 DMA 如果我使用以下命令重新映射内核中 BAR 的物理地址ioremap wc然后将64字节写入
  • 多个组件将节点与标记名 app-lobby 相匹配

    该代码在 Angular 版本 8 3 4 上运行良好 但是当我将其更新到最新版本的 Angular 9 时 出现以下错误 以下是堆栈跟踪 core js 3866 ERROR Error Uncaught in promise Error
  • 如何在 javafx 中加载 tmx/xml 文件?

    在 JavaFX 程序中添加图块地图的最有效方法是什么 我用来创建瓦片地图的程序称为 Tiled 保存的文件为 tmx 格式 现在的问题是 如何将其准确导入到我的 2d 游戏中 我无法在网上找到有用的信息 非常感谢代码示例 Thanks U
  • 在 C++ 中 typedef 数组与使用结构体

    发现了 typedef 的一个有趣的用法 但我确实认为没有必要 typedef int Color 3 那么使用将是 Color pants pants 0 0 etc 通过 ptr 使用 typedef 会创建看起来很奇怪且不清楚的代码
  • 如何使用 Room 库正确使用 strftime 和 datetime?

    我有一个实体Memo班级 我用 TypeConverter转换GregorianCalendar to Long 备忘录 java Entity public class Memo Ignore public static final in
  • UISplitViewController 纵向模式缺少 UIBarButtonItem

    我有一个带有 UISplitViewController 的应用程序 当我在肖像模式下启动该应用程序时 它缺少 Group UIBarButtonItem 我需要切换到横向模式并返回纵向模式才能使其显示 当我以横向模式启动它时 它就在那里
  • 在 Xamarin 中使用字符串资源文件

    我想为我的 Xamarin 应用程序的所有字符串使用一个资源文件 因为我想为我的所有 3 个平台 iOS Android UWP 使用相同的字符串 所以我在 Xamarin Forms 项目中创建了一个新的 resx 文件 但 Visual
  • 解析 JSON 数组

    我使用 touchJSON 从 Web 服务获取 JSON 数组 看起来像这样 icecream title Banana icecream title Strawberry 我无法将其解析为 NSDictionary 因为 touchJS
  • 如何使用 Openlayers 文本图层编辑弹出窗口

    我正在使用 Openlayers 创建一个包含大约 1000 多个点的地图 目前 当我单击一个点的图标时 该点的描述会显示在弹出窗口中 要退出弹出窗口 我需要再次单击同一点的图标 有没有办法修改此代码 以便我可以按关闭按钮或单击地图上的任意
  • SwiftUI:Tabview 重复自身

    我正在尝试为 macOS 10 15 应用程序创建选项卡视图 TabView BookmarksView tabItem Text Bookmark Settings DisplaySettings tabItem Text Display
  • 重命名 R 中的一个命名列

    我想更新数据框的一列 使用其原始名称引用它 这可能吗 例如 假设我有表 数据 a b c 1 2 2 3 2 3 4 1 2 我想将 b 列的名称更新为 d 我知道我可以使用 colnames data 2 lt d 但我可以通过专门引用
  • 如何将 POST 数组分成组?

    我需要像人一样将每个数组的每个值添加到新数组上 div class person div
  • UITabBarAppearance 在 iOS15 iPad 上不起作用(标题颜色)

    我创建了一个简单的演示 只创建了一个 UITabBarController 的子类并在故事板中设置 我想在选择时将 TabBarButtonItem 的标题设置为橙色 在正常情况下将标题设置为黑色 以下代码在 iPhone 上的任何 iOS