UITableView 在视图出现之前重置其背景颜色

2024-02-15

我正在使用可能有点奇特的方式来初始化我的 UI 组件。我以编程方式创建它们,其中有一个 UITableView 实例,我在初始化时立即设置其背景颜色,如下所示:

class MyViewController: UIViewController {
    ...
    let tableView = UITableView().tap {
         $0.backgroundColor = .black
         $0.separatorStyle = .none
    }
    ...
}

where tap是扩展函数:

func tap(_ block: (Self) -> Void) -> Self {
    block(self)
    return self
}

这在我之前的项目中非常有效,该项目是在 Xcode 8 中创建的,然后迁移到 Xcode 9,没有破坏任何东西。但现在我已经在 Xcode 9 中创建了全新的项目,并将上述扩展复制粘贴到其中,但似乎出了问题。当我的视图控制器出现在屏幕上时,表格具有白色背景和默认分隔符插入。

这似乎只影响某些属性,因为其他属性正在正常工作(例如$0.register(nib: UINib?, forCellReuseIdentifier: String)注册所需的细胞类别和$0.showsVerticalScrollIndicator = false隐藏滚动指示器)。

也许你们中的一些人可以让我知道问题的核心是什么。

Here's 完整代码 https://gist.github.com/dkarbayev/80583019503e37c2e8cb83e601d84001,要重现该问题,只需创建一个新项目并替换 ViewController.swift 的内容。如你看到的,table有正确的rowHeight(160) 但重置其背景颜色。

至于“视图出现之前”的声明:我已经打印了表格的背景颜色viewDidLoad, viewWillAppear and viewDidAppear像这样:

print(#function, table.backgroundColor.debugDescription)

– 它仅在最后一次调试打印中更改其颜色:

viewDidLoad() Optional(UIExtendedGrayColorSpace 0 1)
viewWillAppear Optional(UIExtendedGrayColorSpace 0 1)
viewDidAppear Optional(UIExtendedSRGBColorSpace 1 1 1 1)

我最终将初始化转移到了惰性变量的函数中——事实证明,在视图控制器初始化期间初始化 UITableView 会产生一些副作用。

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

UITableView 在视图出现之前重置其背景颜色 的相关文章

随机推荐

  • Flutter中如何获取应用程序缓存大小?

    我的应用程序是基于图像的 我正在使用缓存网络图像 https pub dev packages cached network image处理来自网络的图像 我想向用户展示设备上缓存的图像大小以及在应用程序中清理的选项 我可以使用清理应用程序
  • 使用 RxJava 时如何重试 HTTP 错误 (401) 的 Retrofit 调用?

    我当前的 Android 应用程序正在使用Retrofit 2 4 0 and RxJava 2 1 16 执行我的 Web 服务调用 我正在使用 Google 登录进行用户身份验证 我希望我的 Retrofit 调用能够检测 HTTP 4
  • java中的自动完成如何与反射一起工作?

    我听说 Eclipse 使用反射来提供自动完成功能 但是它实际上是如何工作的 我搜索了 Google 但没有找到关于它的好文章 任何人都可以解释一下过程或为我提供任何有用的文章吗 谢谢进步 反射 API 只能告诉您正在运行的代码 或者至少
  • 在 Android cordova 应用程序中从 javascript 更改 KeepScreenOn

    我正在尝试从我的 cordova 应用程序控制屏幕超时 该应用程序播放视频 当应用程序播放视频时 我想关闭屏幕超时 当视频暂停或他们正在做其他事情时 我想将其重新打开 如果我在 OnCreate 中设置 KeepScreenOn 标志 它可
  • 处理时间窗口不适用于 Apache Flink 中的有限数据源

    我正在尝试将一个非常简单的窗口函数应用于 Apache Flink 中的有限数据流 本地 无集群 这是例子 val env StreamExecutionEnvironment getExecutionEnvironment env fro
  • 使用 xib 字符串文件本地化的 UiTextView

    我在 xCode 中使用基本国际化来管理应用程序中的多种语言 在 xib 文件中我有这个对象 Xrj 9E 2VK it s an UITextView 在相应的字符串文件中 Xrj 9E 2VK text text translated
  • JBoss 垃圾邮件 XA 恢复警告

    我正在运行一个 JPA Spring 应用程序 该应用程序连接到 Microsoft SQL Server 上多个启用 XA 的数据源 一切工作正常 全局事务正确启动并根据需要回滚 但是 JBoss 有时会变得疯狂 每隔几秒就开始发送以下警
  • 在自定义列表视图中显示联系号码和联系人姓名

    谁能告诉我如何在自定义列表视图中显示电话号码和联系人姓名 代码粘贴在下面 import android app Activity import android database Cursor import android net Uri i
  • 用 SpaCy 中的标签替换实体

    SpaCy 是否可以用其标签替换 SpaCy NER 检测到的实体 例如 我一边吃苹果 一边玩我的苹果 Macbook 我已经使用 SpaCy 训练了 NER 模型来检测 水果 实体 并且该模型成功地将第一个 苹果 检测为 水果 但没有将第
  • python 中的测地线缓冲

    给定土地多边形作为Shapely https pypi python org pypi Shapely MultiPolygon 我想找到代表例如的 多 多边形海岸线周围12海里缓冲区 使用匀称buffer方法不起作用 因为它使用欧几里德计
  • 在析构函数中尝试 Catch 块

    在阅读 Hurb Sutter 的 More Exceptional C 时 我偶然发现了以下代码 Example 19 5 Alternative right solution T Close code that could throw
  • Spring-Security:身份验证后调用方法

    我想跟踪用户何时登录我的应用程序 我有一些代码想在用户通过身份验证后立即执行 问题是 我不知道应该在哪里调用它 spring security 有办法在身份验证后调用方法吗 可能对某人有用 对于 Spring 3 配置安全性
  • RMarkdown:UTF-8 适用于 Knit 按钮,但不适用于 render()

    我正在 RMarkdown 中工作 尝试渲染一个包含一些 UTF 8 字符的文档 当我按下 RStudio 中的 Knit 按钮时 一切都运行良好 但是当我使用 render 函数时 UTF 8 会丢失 这是可重现代码的一小段 output
  • appCompat v7 中的 LinearLayoutCompat 是什么?

    在Android平台的支持库appCompat v7中 有一个android support v7 widget LinearLayoutCompat http developer android com reference android
  • 带有路径参数的 SoapUI REST Web 服务模拟

    我正在尝试为 SoapUI 上的 POST 方法创建一个模拟 Web 服务 我创建了一个 REST 项目 然后创建了一个 MockService 一个 MockAction 并定义了几个响应和资源路径 如果我定义一个相对于我的服务的固定常规
  • 自定义 Cython 生成的 .so 文件的位置

    我有一个 Cython 包 其中包含 C 库的包装器 这是包的树形结构 package api pxd wrap pyx setup py wrapper init py wrap py Doing python setup py buil
  • 尝试部署节点时出错:“java.lang.IllegalArgumentException:无法识别的算法:1.2.840.10040.4.1”

    我开发了一个 Cordapp 并尝试将其作为节点部署到我的工作站 我按照指示操 作https docs corda net deploying a node html windows installing and running corda
  • 带总和的多重左连接

    我正在尝试在 sql 查询中使用 Left Join 在表中显示包含 3 个表总和的信息 带有数据表插件 我使用以下查询成功编辑服务器端查询并通过两个表之间的第一个连接 t1 budget t2 budget changes 显示正确的数据
  • wxHaskell 和 Gtk2HS 的相对优点是什么?

    哪个更适合使用 Haskell wxWidgets 开发 GUI 应用程序 通过wx哈斯克尔 http haskell org haskellwiki WxHaskell 或 GTK 通过Gtk2HS http www haskell or
  • UITableView 在视图出现之前重置其背景颜色

    我正在使用可能有点奇特的方式来初始化我的 UI 组件 我以编程方式创建它们 其中有一个 UITableView 实例 我在初始化时立即设置其背景颜色 如下所示 class MyViewController UIViewController