在我的viewDidLoad中,我正在调用方法:
[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中我得到了这个输出:
如何解决iphone 6s plus中渐变向上移动的问题?
答案 0 :(得分:2)
在viewDidLoad中,视图尚未根据特定设备调整大小。因此,渐变的框架将是错误的。
您应该在viewWillAppear
中调用依赖于布局正确的代码,您还应该使用viewDidLayoutSubviews
方法调整它们。
因此,不是从viewDidLoad调用applyGradient方法,而是从viewWillAppear
调用它,并编写更新图层框架的代码并从viewDidLayoutSubViews
调用THAT。
答案 1 :(得分:1)
在创建图层后调整图像大小,但图层不是。解决这个问题的最简单方法是创建一个包含图层的UIView子类。然后,您可以响应大小更改并调整图层大小