【问题标题】:UITextView with white background showing as Color Blended Layer in instruments and simulator具有白色背景的 UITextView 在仪器和模拟器中显示为颜色混合层
【发布时间】:2013-08-19 08:16:25
【问题描述】:

所以,我在一个单元格中有一些 UILabel 和 UITextViews。我的表格滚动有点慢,我尝试了 iOS 模拟器和仪器中可用的“颜色混合图层”实用程序。它以红色显示正在混合并导致滚动缓慢的图层。

所有元素都在混合,所以我给 UILabels 设置了一个白色背景(与单元格相同),现在 UILabels 没问题(他们之前有 clearColor 作为背景)。

我对 UITextViews 做了同样的事情,我选择了白色背景,但它们仍然在屏幕中显示为混合层(红色)。

每个 UITextView 配置都在界面生成器中完成,我尝试了每个选项,但它们仍然显示为红色。

我必须对 UITextViews 做些什么才能使它们的图层不混合?

提前致谢!

PD:抱歉,我不能包含捕获

【问题讨论】:

    标签: ios xcode uitextview instruments blend


    【解决方案1】:

    我也在努力解决这个问题。我有一个 UITableView,它在 iPhone 上滚动得很好,但在 iPad 上却像疯了一样抖动。我在 Instruments 中打开了 Color blending layers,就像你说的,opaque = YES;backgroundColor = [UIColor whiteColor]; 似乎没有效果。

    Bob 也是正确的,UILabels 性能更高。但是,我的实现依赖于排除路径,由于暴露的 TextKit 堆栈,这些路径仅在 UITextView 中可用。我不能只使用 UILabel 所以出于绝望我尝试了这个,我的 UITextViews 上的红色消失了:

    for (UIView *subview in textView.subviews) {
        subview.backgroundColor = theme.post.backgroundColor;
    }
    

    我知道这是一个老问题,但我花了一天的大部分时间来调试它。我希望其他人觉得它有用。

    【讨论】:

    • 这从我的文本视图中删除了混合层。我在初始化程序中添加了这个循环。
    【解决方案2】:

    好吧,UITextView 是一个更高级的可滚动视图,并且支持自定义文本格式,因此您可能无法将其设置为“不混合”。对于其他视图,您应该选中 opaque 复选框,但我怀疑这在这种情况下是否有效。

    您最好的选择是改用 UILabel。当用户需要编辑字段时,您可以将其替换为 UITextView,但在滚动时使用 UILabel 应该会大大提高速度。

    【讨论】:

    • 这就是我所做的,我用 UILabel 替换了每个 UITextView,现在滚动工作正常 :) 谢谢!
    • 但是UILabel不支持url的触摸事件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    相关资源
    最近更新 更多