2016-12-07 73 views
0

在我viewDidLoad中正確設置我打電話方法:CAGradient層向上移動在iPhone 6S加,而在iPhone 5

[self applyGradientOnDogImageView]; 

-(void)applyGradientOnDogImageView{ 

CAGradientLayer *gradient = [CAGradientLayer layer]; 

gradient.frame = CGRectMake(self.dogImageView.bounds.origin.x, self.dogImageView.bounds.origin.y+self.dogImageView.bounds.size.height/2, self.dogImageView.bounds.size.width, self.dogImageView.bounds.size.height/2); 

gradient.colors = [NSArray arrayWithObjects:(__bridge id)[[UIColor clearColor] CGColor], (__bridge id)[[[UIColor blackColor] colorWithAlphaComponent:1.0] CGColor], nil]; 

[self.dogImageView.layer insertSublayer:gradient atIndex:0]; 

}

在iphone 5我得到這樣的輸出:

enter image description here

在iphone 6S加上得到這個輸出: enter image description here

如何解決這個梯度在iPhone 6s plus向上移動的問題?

+0

這是一個有趣的狗! :) –

+0

@鄧肯和名稱是老虎;) – crypt

+0

你使用imageview的autolayout?你正在展示的功能何時被調用? – Maurice

回答

2

在viewDidLoad中,視圖尚未調整到特定設備的大小。因此,你的漸變框架將會出錯。

您應該調用取決於viewWillAppear中正確佈局的代碼,並且還應該在viewDidLayoutSubviews方法中調整它們。

因此,不要從viewDidLoad調用applyGradient方法,而應從viewWillAppear調用它,並編寫更新圖層框架並從viewDidLayoutSubViews調用THAT的代碼。

+0

謝謝,這爲我工作。 @Jerry提供的鏈接也很有幫助。所以我的最終解決方案是鄧肯和傑瑞的解決方案的組合。 – crypt

1

圖像在創建圖層後調整大小,但圖層不是。解決這個問題的最簡單方法是創建一個包含圖層的UIView子類。然後,您可以響應尺寸更改並調整圖層大小

+1

與此問題類似:http://stackoverflow.com/questions/29111099/calayer-not-resizing-with-autolayout – Jerry

相關問題