我想添加一堆漸變到不同的UIScrollView和UITableView的。我所遇到的如何實現這一目標的最常見的例子是馬特Galagher的真棒博客裏,他貼出瞭如何在這裏使用梯度的例子:如何向scrollview添加漸變?
http://cocoawithlove.com/2009/08/adding-shadow-effects-to-uitableview.html
我的問題,雖然是什麼優勢/好處做你通過在layoutSubviews方法中插入漸變與在viewDidLoad方法中設置漸變來獲得好處?我意識到,通過佈置viewDidLoad路線,當方向改變時,您將不得不手動更新視圖,但從性能的角度來看,這種方法只會在視圖加載時調用一次,然後在方向改變時再次調用。相比之下,layoutSubviews方法每次在scrollview/tableview的情況下視圖改變時都會被調用!
//
// Construct the origin shadow if needed
//
if (!originShadow)
{
originShadow = [self shadowAsInverse:NO];
[self.layer insertSublayer:originShadow atIndex:0];
}
else if (![[self.layer.sublayers objectAtIndex:0] isEqual:originShadow])
{
[self.layer insertSublayer:originShadow atIndex:0];
}
[CATransaction begin];
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];
//
// Stretch and place the origin shadow
//
CGRect originShadowFrame = originShadow.frame;
originShadowFrame.size.width = self.frame.size.width;
originShadowFrame.origin.y = self.contentOffset.y;
originShadow.frame = originShadowFrame;
[CATransaction commit];
他每次調用方法時似乎都在調整幀的大小?如果在viewDidLoad方法中初始化和調整漸變大小,並且在/如果方向更改時做了任何調整大小,會不會更好?
很確定我在這裏錯過了一些東西,所以任何澄清將不勝感激。
Thx
嗨,thx的迴應。我已經有一個支持視圖,我的scrollview放在頂部,所以我已經添加了漸變到viewDidLoad方法的底部視圖。任何理由爲什麼我應該調整layoutSubviews中的視圖改變時建議調整漸變大小vs只是手動調用一個方法來調整漸變的大小,一旦我收到我的viewcontroller方向變化? – HenryH 2011-04-21 20:38:07
完全沒有,如果您願意,可以根據方向更改來調整它的大小。 layoutSubviews是專爲佈局設計的,這是你在做什麼,但是在orientation orientation方法中也可以。我試圖解決的更大問題是,您不應該在layoutSubviews中重新創建它。 – 2011-04-22 17:18:30