swift - 为什么 UIViews 背景颜色没有更新?
问题描述
Switch 语句有效,但不会重置视图背景颜色等。
我有一个UIImage
(图标)和一个UIButton
嵌入在UIView
(自定义类型DropShadowCircleView
)中,如下图所示。
当轻按步行按钮时,avar navigationOption
被设置为walking
ordriving
并被setupNavigationSelectionView()
执行。
问题是:开关的外壳“行走”工作正常,但外壳“驾驶”不会将UIView
图标色调颜色重置为原始设置,例如;背景颜色等..任何想法为什么?
func setupNavigationSelectionView(){
switch navigationOption {
case "walking":
walkingBg.setGradientBackground(colourOne: softGreen, ColourTwo: softBlue)
walkingBg.layer.cornerRadius = walkingBg.frame.width / 2
walkingBg.clipsToBounds = true
walkingIcon.tintColor = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1)
case "driving":
walkingBg.backgroundColor = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1)
walkingBg.layer.cornerRadius = walkingBg.frame.width / 2
walkingBg.clipsToBounds = true
walkingIcon.tintColor = #colorLiteral(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)
default:
break
}
}
编辑:这是我的DropShadowCircleView
课
class DropShadowCircleView: UIView {
override func awakeFromNib() {
setupView()
super.awakeFromNib()
}
func setupView(){
self.layer.shadowOpacity = 0.50
self.layer.shadowRadius = 20
self.layer.shadowColor = UIColor.black.cgColor
self.layer.cornerRadius = self.frame.width / 2
}
}
编辑:这是我setGradientBackground
在扩展文件中的函数UIView
func setGradientBackground(colourOne: UIColor, ColourTwo: UIColor) {
let gradientLayer = CAGradientLayer()
gradientLayer.frame = bounds
gradientLayer.colors = [colourOne.cgColor, ColourTwo.cgColor]
gradientLayer.locations = [0.0, 1.0]
gradientLayer.startPoint = CGPoint(x: 1.0, y: 1.0)
gradientLayer.endPoint = CGPoint(x: 0.0, y: 0.0)
layer.insertSublayer(gradientLayer, at: 0)
}
解决方案
重置图标时需要删除渐变层。
将此添加到您的extension UIView
:
func removeGradientBackground() {
guard
let idx = layer.sublayers?.index(where: { $0 is CAGradientLayer })
else { return }
layer.sublayers?.remove(at: idx)
}
并在您重置图标时调用它。
推荐阅读
- reactjs - React:如果上传的图像文件太大,则显示错误模式
- python - 从标题列中获取国家名称并将它们添加到新列中
- python - Kivy:如何从自身获取对象的 id?
- mysql - 当列是外键时,mysql/mariadb 对多列索引键大小有限制吗?
- javascript - 无法在 javascript 中正确显示
- arrays - 在 Hive 中,这种模式如何从 json 数组中识别嵌套的 json?
- python - 在 CSV 上写入和过去 - Selenium , Python
- python - numpy 数组中的条件
- excel - 如何使用 MS Word 中的宏清除书签数据
- entity-framework - 在 ASP.NET MVC EF 核心中将 50 条记录从 JSON 文件插入/更新到 SQL 表占用太多