UICollectionViewCell 中 UILabel 的 UIAppearance - selected/unselected
UIAppearance of UILabel whithin UICollectionViewCell - selected/unselected
我目前正在使用 UIAppearance
为我的项目中所有商店的颜色工作,这使我能够在我的 iOS 应用程序上创建自己的 "DIY" 版本的夜间模式.
样本:
UILabel.appearance().textColor = colorScheme.primaryColor
UILabel.appearance(whenContainedInInstancesOf: [MyController.self]).textColor = colorScheme.secondaryColor
...
注意:Colorscheme 只是一个包含我所有颜色的结构,它根据状态切换 .lightMode / .darkMode
我最近构建了一个 UICollectionViewCell
的子类,里面有一个 UILabel
,我想使用相同的方法来定义其中的颜色。然而,我很难弄清楚 如何根据 Cell 的选定状态为嵌套的 UILabel 设置不同的颜色。
例如:
// create a default UIView with specific backgroundColor
let selectedBackgroundView = UIView()
selectedBackgroundView.backgroundColor = colorScheme.selectedBackgroundColor
MyCollectionViewCell.appearance().backgroundColor = colorScheme.backgroundColor // default
MyCollectionViewCell.appearance().selectedBackgroundView = selectedBackgroundView // set specific view used when cell is selected
当我想在选择或不选择 MyCollectionViewCell
时设置不同的背景颜色时,上面的代码工作正常,但是我希望嵌套的 UILabel
也更改其 fontColor
,取决于是否选择了单元格。 UIAppearance
有没有合适的方法来实现这一点?
终于找到了解决此问题的方法。我 post 我的解决方案可能会对某人有所帮助。
首先我为 textColor
和 highlightedTextColor
定义了颜色
UILabel.appearance(whenContainedInInstancesOf: [MyCollectionViewCell.self]).textColor = colorScheme.color1
UILabel.appearance(whenContainedInInstancesOf: [MyCollectionViewCell.self]).highlightedTextColor = colorScheme.color2
然后在 MyCollectionViewCell
我 "bind" isSelected
到 UILabel isHighlighted
:
class MyCollectionViewCell: UICollectionViewCell {
@IBOutlet weak var myLabel: UILabel!
override var isSelected: Bool {
didSet {
self.myLabel.isHighlighted = isSelected
}
}
}
完美运行。
希望这可以帮助到某人
我目前正在使用 UIAppearance
为我的项目中所有商店的颜色工作,这使我能够在我的 iOS 应用程序上创建自己的 "DIY" 版本的夜间模式.
样本:
UILabel.appearance().textColor = colorScheme.primaryColor
UILabel.appearance(whenContainedInInstancesOf: [MyController.self]).textColor = colorScheme.secondaryColor
...
注意:Colorscheme 只是一个包含我所有颜色的结构,它根据状态切换 .lightMode / .darkMode
我最近构建了一个 UICollectionViewCell
的子类,里面有一个 UILabel
,我想使用相同的方法来定义其中的颜色。然而,我很难弄清楚 如何根据 Cell 的选定状态为嵌套的 UILabel 设置不同的颜色。
例如:
// create a default UIView with specific backgroundColor
let selectedBackgroundView = UIView()
selectedBackgroundView.backgroundColor = colorScheme.selectedBackgroundColor
MyCollectionViewCell.appearance().backgroundColor = colorScheme.backgroundColor // default
MyCollectionViewCell.appearance().selectedBackgroundView = selectedBackgroundView // set specific view used when cell is selected
当我想在选择或不选择 MyCollectionViewCell
时设置不同的背景颜色时,上面的代码工作正常,但是我希望嵌套的 UILabel
也更改其 fontColor
,取决于是否选择了单元格。 UIAppearance
有没有合适的方法来实现这一点?
终于找到了解决此问题的方法。我 post 我的解决方案可能会对某人有所帮助。
首先我为 textColor
和 highlightedTextColor
UILabel.appearance(whenContainedInInstancesOf: [MyCollectionViewCell.self]).textColor = colorScheme.color1
UILabel.appearance(whenContainedInInstancesOf: [MyCollectionViewCell.self]).highlightedTextColor = colorScheme.color2
然后在 MyCollectionViewCell
我 "bind" isSelected
到 UILabel isHighlighted
:
class MyCollectionViewCell: UICollectionViewCell {
@IBOutlet weak var myLabel: UILabel!
override var isSelected: Bool {
didSet {
self.myLabel.isHighlighted = isSelected
}
}
}
完美运行。
希望这可以帮助到某人