Xcode:设置UIControl背景颜色会在方向更改时重置

时间:2018-11-07 06:53:19

标签: swift xcode

简而言之,我做了类似按钮的“单选按钮”。按下按钮时,其背景设置为深绿色,其他设置为浅绿色。

但是,当我旋转设备(使用仿真器)时,颜色会重置为浅绿色-这是.xib文件中设置的原始颜色。

Button selected

After the device is rotated

每个绿色的“按钮”都是一个UIControl。我用

设置颜色
button.backgroundColor = unselectedColour

1 个答案:

答案 0 :(得分:0)

因此,就像亚历山大建议的那样,我设法使用属性观察器使此工作正常进行。

像上面提到的,我有3个按钮。我还有一个枚举可帮助您记住已选择了哪个按钮(例如,无,button1,button2,button3)。我使用属性观察器来保持跟踪该枚举的变量,如下所示:

/** Remember the last trailer selection made. */
var lastSelection: MyEnum = .none {
   willSet {
       setButtonColours(selection: newValue)
   }

   didSet {
   }
}

每个按钮的操作都会设置lastSelection变量,然后触发该变量。最后,我必须添加一些代码以确保重绘在方向更改后发生:

override func viewDidLayoutSubviews() {
    setButtonColours(selection: lastSelection)
}

我不知道这是否是最好的解决方案(因为我是菜鸟),但是它有效!再次感谢亚历山大的帮助!