2011-04-14 53 views
7

我正在使用AQGridView在iPad上的網格中顯示我的數據。每個單元格都是UIView子類,通常同時顯示18個單元格。UIView:沒有性能問題的圓角點

我想爲這些單元添加一個圓角,因此我設置了相關圖層的cornerRadius屬性(即主要的UIView和一個子視圖的圖層)。但是,這會導致性能問題,並且滾動不再流暢。當使用其他CALayer屬性時,如shadowOpacity,這不會發生。

是否有任何其他方式添加一個圓角(除了使用圖像)?或者我做錯了什麼?

回答

27

當在包含UIImageView子視圖的視圖圖層上使用cornerRadius時,我也看到了主要的性能問題。光柵化解決了這個問題:view.layer.shouldRasterize = YES;

+2

你幾乎爲我節省了我的時間! :) – 2011-12-15 07:23:53

+0

我以前用過這個很成功。然而,在整個視角四捨五入會導致整個視圖質量的下降:https://skitch.com/franklinwebber/8q8c2/ios-simulator – burtlo 2012-03-29 19:21:12

+18

但是,我發現問題在於光柵化的執行過於低解決了這個問題'myView.layer.rasterizationScale = [[UIScreen mainScreen] scale];' – burtlo 2012-03-29 19:28:51

0

它可能是您放置setCornerRadius調用的位置。確保它在某個地方只被調用一次,而不是在drawRect方法中。

+0

它在'init'方法中,所以我猜這不是問題。 – fabian789 2011-04-14 17:30:24

+1

似乎是一個常見問題,請參閱http://stackoverflow.com/questions/4735623/uilabel-layer-cornerradius-negatively-impacting-performance – picciano 2011-04-14 17:33:30

+0

我明白了。然後,我將創建一個圖像。你能否將你的評論變成答案,以便我能接受它? – fabian789 2011-04-14 17:42:50