UIView performance: opaque, backgroundColor, clearsContextBeforeDrawing?

后端 未结 2 783
感动是毒
感动是毒 2021-02-05 21:04

I\'m displaying opaque PNGs with UIImageViews inside of a superview with a white background color. What\'s best for performance?

UIImageView D

相关标签:
2条回答
  • 2021-02-05 21:38

    If you set UIView's opaque property to YES, you must ensure your drawing completely fills the view with no transparency. So, you need to set a white background colour (a clear one won't work, because that's not opaque).

    I don't think you want to change the defaults for your image view, but you should ensure that your PNGs do not have any transparency (that is, have no alpha channel; you can check this in Preview's image inspector; ensure it doesn't say 'Has Alpha'.). I believe UIImageView will do the right thing if you give it an opaque image.

    Depending on what's in the background, you might get better performance with opaque = YES and a white background for your image views, (to prevent redrawing parts of the parent view) but I wouldn't start that way.

    0 讨论(0)
  • 2021-02-05 21:47

    Assuming that your PNGs always fills the entire UIImageView, you should get the best performance using:

    opaque = YES, clearsContextBeforeDrawing = NO. In this mode backgroundColor is irrelevant. The pixels are simply replaced with the new image data.

    For transparent PNGs on a single-color background, the fastest will be:

    opaque = YES, clearsContextBeforeDrawing = YES, and backgroundColor matching whatever you need. In this case [UIColor whiteColor].

    0 讨论(0)
提交回复
热议问题