uitableview 中的 Uilabel 在调试模拟器颜色混合层中不显示不透明且不透明

Posted

技术标签:

【中文标题】uitableview 中的 Uilabel 在调试模拟器颜色混合层中不显示不透明且不透明【英文标题】:Uilabel in uitableview not showing opaque without transparency in debug simulator color blended layers 【发布时间】:2017-11-28 22:46:49 【问题描述】:

这是我的代码,找不到这是怎么回事。对于 lbl_nombre 来说没问题。但是 lbl_desc 我得到的输出是启用了 sim 颜色层上的透明通道。

-- 编辑--我做了另一次检查,因为在代码中一切看起来都很好,并且知道它是如何发生的,但这不应该发生这种情况,只要描述中有一个带有重音的单词,例如 á ó í 它正在发生,对于其他单词,例如拉丁语中的ñ 表现正常。那么如果我使用任何重音符号设置它,uilabel 怎么会转动 alpha 通道/透明度?有什么解决办法吗? -- 编辑 -- 包括 MenuViewCell

class MenuViewCell: UITableViewCell 

    @IBOutlet var lbl_nombre : UILabel!
    @IBOutlet var lbl_desc : UILabel!
    @IBOutlet var lbl_precio : UILabel!




 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 



  let data = self.sections[(indexPath as NSIndexPath).section].items[(indexPath as NSIndexPath).row]
  let cell : MenuViewCell = self.tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! MenuViewCell




    cell.lbl_desc.numberOfLines = 0
    cell.lbl_nombre.numberOfLines = 0
    cell.lbl_nombre.text = data.name
    cell.lbl_desc.text = data.desc
    cell.lbl_desc.isOpaque = true
    cell.lbl_desc.backgroundColor = .white

    var finalprice = ""
    if (data.price > 0)
        finalprice = "RD$\(data.price!)"
    
    cell.lbl_precio.text = "\(finalprice)" as String
       cell.lbl_nombre.lineBreakMode = NSLineBreakMode.byWordWrapping
    cell.lbl_desc.lineBreakMode = NSLineBreakMode.byWordWrapping

    cell.lbl_nombre.sizeToFit()
    cell.lbl_desc.sizeToFit()


    return cell

【问题讨论】:

你能显示MenuViewCell吗?我认为问题出在标签下方 @trungduc 非常感谢您与我们联系,我认为代码也有问题,但是.. 现在我已经测试了更多。问题在于,一旦某些传入文本具有í,特别是。我只是在没有来自 json 的数据设置的情况下手动测试它,í 给我带来了麻烦.. cell.lbl_desc.text = "hola prueba \n multiline í \n ok" // data.desc @trungduc 编辑并添加了 menuViewCell。还仔细检查了情节提要,(3 个标签) 是的,你是对的。问题是因为í 字符。很奇怪。 是的。这太烦人了..三倍检查..ó没问题。 í 繁荣混乱.. 它发生在 ios 11.2 上 【参考方案1】:

要解决此问题,您应该将标签的layer.masksToBounds 设置为true

cell.lbl_desc.layer.masksToBounds = true

【讨论】:

非常感谢!它确实奏效了! .您是否知道通过任何更改如何使disclosureDetail图标不透明? :D 无需为单元格的 accesorytype 设置自定义视图.. 你的意思是改变公开细节图标的不透明?或者去掉上面的颜色混合层 去掉上面的颜色混合层:D 我认为为accessoryView 使用自定义视图是最简单的方法。但无论如何,accessoryView 上的颜色混合层如果保留它不会有太大影响:D。

以上是关于uitableview 中的 Uilabel 在调试模拟器颜色混合层中不显示不透明且不透明的主要内容,如果未能解决你的问题,请参考以下文章

UITableView中的UILabel

如何使 UILabel 看起来像 UITableView 中的节标题一样蚀刻

UITableCell 中的 UILabel 大小不正确,直到 UITableView 滚动

如何使自定义单元格中的 UILabel 显示保存在 UITableView 中的更改

如何在 uilabel 中使用多行并根据 Swift 中的标签高度自动扩展 uitableview 行高?

尝试使用 Swift 在 UITableView 中的部分标题的 UIView 中设置 UILabel 的文本