Canamp;#39;t programmatically change color set in storyboard as color from xcassets catalog(能否以编程方式将情节提要中的颜色设置更改为xcsets目录中的颜色)
本文介绍了能否以编程方式将情节提要中的颜色设置更改为xcsets目录中的颜色的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
当我将情节提要中某些属性的颜色(例如UILabel
的textColor
)设置为在xcsets目录中创建为新颜色集的颜色时
这样我就不能在第一次尝试时以编程方式更改此颜色:
label.textColor = UIColor(named: "HighlightedGreen")
.请注意,我从数据源方法cellForItemAt
调用它。
黑客攻击: 我可以通过在情节提要中将此颜色设置为从颜色选择器中拾取的任何其他颜色来解决此问题,但我想知道为什么会发生这种情况。
那么,为什么会发生这种情况?
推荐答案
当从Storyboard/Xib
加载UIView
subClass
LikeUITableViewCell
时,它会将Attribute Inspector
中指定的属性应用于所有subViews
。我们有以下回调方法来了解视图何时从Storyboard/Xib
,
override func prepareForInterfaceBuilder() {
super.prepareForInterfaceBuilder()
}
override func awakeFromNib() {
super.awakeFromNib()
}
这些方法可以很好地添加/删除子视图,但它们不应该更新子视图的size
或某些attribute inspector
相关属性。建议的更新子视图的方法是在超级视图完成加载和应用所有attribute inspector
属性并调用layoutSubviews
时。因此,您应该对子视图应用任何表面上的更改。例如,
override func layoutSubviews() {
super.layoutSubviews()
label.textColor = UIColor(named: "HighlightedGreen")
}
对于UITableViewCell
,任何实现UITableViewDataSource
的对象还保证使用delegate
方法在单元格显示之前应用任何修饰更改,如下所示,因此这也是更改颜色的另一个很好的候选对象。
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
(cell as! MyListTableViewCell).label.textColor = UIColor(named: "HighlightedGreen")
}
这篇关于能否以编程方式将情节提要中的颜色设置更改为xcsets目录中的颜色的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:能否以编程方式将情节提要中的颜色设置更改为xcsets目录中的颜色
基础教程推荐
猜你喜欢
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01
- 如何在 UIImageView 中异步加载图像? 2022-01-01
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- android 应用程序已发布,但在 google play 中找不到 2022-01-01
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01
- Android:对话框关闭而不调用关闭 2022-01-01
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01