我的Swift应用程序遇到了一个奇怪的问题。我尝试使用我创建的自定义单元格创建# 1 % (x+2 or x+1) returns 1 for 0 or positive, non-1 for negative
# Use x+2 or x+1 to avoid ZeroDivisionError for x == 0
>>> print([x for x in li if 1 == 1 % (x+2 or x+1)])
[2, 5, 0, 389, 202, 8]
# We can even avoid using == by substituting subtraction since the result
# is a fixed 1 for non-negative, though it's pretty ugly looking
>>> print([x for x in li if not 1 % (x+2 or x+1) - 1])
[2, 5, 0, 389, 202, 8]
# Or if 0 shouldn't be included in results, tweak the divisor differently:
>>> print([x for x in li if 1 == 1 % (x+1 or x)])
[2, 5, 389, 202, 8]
。
我在单元格中有一个空标签和一个文本标签。通过将UITableViewCell
设置为某些R,G,B颜色,可以简单地对空标签进行着色。
但是,当我在表格中选择和取消选择行时,标签的背景颜色会消失。这种情况一直发生,直到我将单元格滚出视图并再次返回视图,再次向我显示颜色。
这里有一些屏幕截图来说明发生了什么:
这就是我选择颜色时的样子 - 它似乎将标签背景颜色更改为透明。它不应该这样做
当然,我不希望这种情况发生。目的是使标签颜色保持不变。
这是我backgroundColor
cellForRowAtIndexPath
请注意,我已尝试使用以下代码行来更改backgroundColor,但是同样的事情会发生,但它会填充圆形边框之外:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! ScenesTableCell
cell.sceneNameLabel.text = scenesArr[indexPath.row].sceneName
let red = scenesArr[indexPath.row].sceneCol[0]
let green = scenesArr[indexPath.row].sceneCol[1]
let blue = scenesArr[indexPath.row].sceneCol[2]
let brightness = scenesArr[indexPath.row].sceneBrightnessMultiplier
cell.colourIndicatorLabel.layer.backgroundColor = UIColor(red: CGFloat(red), green: CGFloat(green), blue: CGFloat(blue), alpha: CGFloat(brightness)).CGColor
cell.colourIndicatorLabel.layer.cornerRadius = 5
cell.colourIndicatorLabel.layer.borderWidth = 1
cell.colourIndicatorLabel.layer.borderColor = UIColor(red: 77.0/255.0, green: 146.0/255.0, blue: 203.0/255.0, alpha: 1.0).CGColor
}
我非常感谢这里的一些帮助!我知道我不太擅长提问,所以如果您有任何疑问,请询问! ;)
答案 0 :(得分:2)
iOS会在选择单元格时清除所有单元格子视图的背景颜色。您可以通过覆盖setSelected
子类上的UITableViewCell
方法来避免这种情况:
extension ScenesTableCell {
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
self.colourIndicatorLabel.backgroundColor = .blue // Set with the color you need
}
}
为了使用圆角和UIView.backgroundColor
而不溢出,您可以在单元格或单元格子类出列时设置cell.colourIndicatorLabel.clipsToBounds = true
。