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目录中的颜色
猜你喜欢
- 在测试浓缩咖啡时,Android设备不会在屏幕上启动活动 2022-01-01
- android 4中的android RadioButton问题 2022-01-01
- Android - 拆分 Drawable 2022-01-01
- Android viewpager检测滑动超出范围 2022-01-01
- Android - 我如何找出用户有多少未读电子邮件? 2022-01-01
- 用 Swift 实现 UITextFieldDelegate 2022-01-01
- 想使用ViewPager,无法识别android.support.*? 2022-01-01
- MalformedJsonException:在第1行第1列路径中使用JsonReader.setLenient(True)接受格式错误的JSON 2022-01-01
- 使用自定义动画时在 iOS9 上忽略 edgesForExtendedLayout 2022-01-01
- 如何检查发送到 Android 应用程序的 Firebase 消息的传递状态? 2022-01-01