【问题标题】:UIView: Rounded Corners Without Performance IssuesUIView:没有性能问题的圆角
【发布时间】:2011-08-05 17:42:54
【问题描述】:

我正在使用AQGridView 在 iPad 上的网格中显示我的数据。每个单元格都是一个UIView 子类,通常同时显示 18 个单元格。

我想为这些单元格添加一个圆角,所以我设置了相关层的cornerRadius 属性(即主UIView 和一个子视图的层)。但是,这会导致性能问题,并且滚动不再平滑。使用其他CALayer 属性时,例如shadowOpacity,不会发生这种情况。

还有其他添加圆角的方法吗(除了使用图片)?还是我做错了什么?

【问题讨论】:

    标签: iphone uiview calayer rounded-corners aqgridview


    【解决方案1】:

    这可能是您放置 setCornerRadius 调用的位置。确保它在某个地方只被调用一次,而不是在例如 drawRect 方法中。

    【讨论】:

    • init方法里,所以我猜应该没问题。
    • 我明白了。然后我将创建一个图像。您能否将您的评论转化为答案,以便我接受?
    【解决方案2】:

    在包含 UIImageView 子视图的视图层上使用cornerRadius 时,我还看到了主要的性能损失。光栅化解决了这个问题:view.layer.shouldRasterize = YES;

    【讨论】:

    • 您确实为我节省了大量时间! :)
    • 我以前用过这个,非常成功。但是,对整个视图进行圆角会导致整个视图的质量有所下降:skitch.com/franklinwebber/8q8c2/ios-simulator
    • 但是,我发现问题是光栅化的分辨率太低,这解决了问题myView.layer.rasterizationScale = [[UIScreen mainScreen] scale];
    • @詹姆斯沃尔德。我已经使用“[myview.layer setShadowPath:[UIBezierPath bezierPathWithRect:myview.bounds].CGPath];”解决了性能问题。阴影和圆角半径在人像模式下运行良好,滚动流畅。但我的应用程序在两种模式下都受支持,当我更改方向阴影时,阴影无法正常工作(根据纵向视图框架的阴影显示)。所以知道如何解决这个问题吗?
    • @Coder 也许你没有在方向改变后设置阴影路径?视图的边界可能会根据设备方向而改变。您必须使用视图新更新的边界再次设置阴影路径。
    猜你喜欢
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    • 2010-12-03
    相关资源
    最近更新 更多