swift - UICollectionViewCell 中 UILabel 的 UIAppearance - 选定/未选定

标签 swift uiappearance

我目前正在使用 UIAppearance 为我的项目中的所有 socket 设置颜色,这使我能够在我的 iOS 应用程序上创建自己的“DIY”版本的夜间模式。

示例:

UILabel.appearance().textColor = colorScheme.primaryColor 
UILabel.appearance(whenContainedInInstancesOf: [MyController.self]).textColor = colorScheme.secondaryColor 
... 

注意:Colorscheme 只是一个包含我所有颜色的结构,根据状态 .lightMode/.darkMode 进行切换

我最近构建了一个 UICollectionViewCell 的子类,其中包含一个 UILabel ,我想使用相同的方法来定义其中的颜色。但是,我很难弄清楚如何根据单元格的选定状态为嵌套 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 实现此目的?

最佳答案

终于找到了解决此问题的方法。我发布我的解决方案可能会对某人有所帮助。

首先,我定义 textColorhighlightedTextColor 的颜色

UILabel.appearance(whenContainedInInstancesOf: [MyCollectionViewCell.self]).textColor = colorScheme.color1
UILabel.appearance(whenContainedInInstancesOf: [MyCollectionViewCell.self]).highlightedTextColor = colorScheme.color2

然后在MyCollectionViewCell中,我将isSelected“绑定(bind)”到UILabel isHighlighted:

class MyCollectionViewCell: UICollectionViewCell {

    @IBOutlet weak var myLabel: UILabel!

    override var isSelected: Bool {
        didSet {
            self.myLabel.isHighlighted = isSelected
        }
    }
}

工作完美。

希望这可以帮助别人

关于swift - UICollectionViewCell 中 UILabel 的 UIAppearance - 选定/未选定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56553430/

相关文章:

ios - 后退按钮没有相应的颜色( objective-c )

ios7 - 在iOS 7的MFMailComposerViewController中更改导航按钮的颜色

ios - 我应该只为 UIAppearance 子类化吗

ios - 在 Collection View 的容器 View 中呈现 View Controller didSelectItemAtIndexPath swift

swift - 如何快速调用扩展中的函数?

Swift - 为一个表中的不同单元格设置不同的行高

ios - UIAppearance 代理规则何时应用于新的 View Controller ?

ios - 为 UIToolBar 设置背景图片

swift - 4 点之间的 Scenekit 形状

swift - 如何从另一个类中设置 View 的导出值