故事板与模拟器无约束适用
Storyboard Vs Simulator no constraint apply
很可能我在工作了这么多小时后感到很困惑,但我不明白发生了什么......
在下面我给你看的照片中你可以看到故事板 lamm。橙色箭头表示我正在使用 iPhone SE,而我的模拟器是 iPhone SE 和 IPhone 8 plus ..
如您所见,即使我设置了限制条件,这两个模拟器也有两个不同的视图。
UIImageView 有一个渐变效果,如果我让 UIImageView 在所有设备上看起来都很完美,即使我正在制作故事板 Iphone 我 .. 我不明白为什么这对我有帮助?
我也给你看一下 UIImageView 的代码
- (void)viewDidLoad {
[super viewDidLoad];
CAGradientLayer *gradientMask = [CAGradientLayer layer];
gradientMask.frame = _images.bounds;
gradientMask.colors = @[(id)[UIColor whiteColor].CGColor,
(id)[UIColor clearColor].CGColor];
_images.layer.mask = gradientMask;
gradientMask.startPoint = CGPointMake(0.8, 0.0);
gradientMask.endPoint = CGPointMake(0.8, 0.8);
gradientMask.colors = @[(id)[UIColor clearColor].CGColor,
(id)[UIColor whiteColor].CGColor,
(id)[UIColor whiteColor].CGColor,
(id)[UIColor clearColor].CGColor];
gradientMask.locations = @[@0.0, @0.0, @0.8, @1.0];
_images.contentMode = UIViewContentModeScaleAspectFill;
UIBlurEffect *effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
UIVisualEffectView *blur = [[UIVisualEffectView alloc] initWithEffect:effect];
blur.frame = CGRectMake(_images.frame.origin.x, _images.frame.origin.y, _images.frame.size.width, _images.frame.size.height +50);
[_images addSubview:blur];
[UIView animateWithDuration:.1 animations:^{
blur.alpha = .7;
}];
}
您正在呼叫:
gradientMask.frame = _images.bounds;
在 viewDidLoad()
中。那时,自动布局尚未布局所有视图,因此您的 _images.bounds
与故事板中的内容相匹配。
结果是图像视图的右侧被遮蔽了,因为渐变层没有覆盖它。
您需要在 自动布局完成后将渐变蒙版创建/调整大小移动到一个点 ,或者我建议的是子类化 UIImageView
在那里添加渐变蒙版,并让它在 layoutSubviews()
.
中自动调整大小
编辑:作为旁注,您不应该在 viewDidLoad()
中放置视图动画 - 很可能您甚至看不到它。
试试这个....
1.first select phone 你需要,如果你需要 iPhone 8 那么 select 模拟器 iPhone 8 及以下MainStoryboard 有一个选项 select phone 它的方向然后 select 视图 iPhone 8.
2.place ViewController 中的图像
3.then 在 Xcode select 图像的一侧,然后是自动调整大小选项 select 水平线和垂直线(打勾)。
然后运行你会得到正确的视图。
很可能我在工作了这么多小时后感到很困惑,但我不明白发生了什么......
在下面我给你看的照片中你可以看到故事板 lamm。橙色箭头表示我正在使用 iPhone SE,而我的模拟器是 iPhone SE 和 IPhone 8 plus ..
如您所见,即使我设置了限制条件,这两个模拟器也有两个不同的视图。
UIImageView 有一个渐变效果,如果我让 UIImageView 在所有设备上看起来都很完美,即使我正在制作故事板 Iphone 我 .. 我不明白为什么这对我有帮助?
我也给你看一下 UIImageView 的代码
- (void)viewDidLoad {
[super viewDidLoad];
CAGradientLayer *gradientMask = [CAGradientLayer layer];
gradientMask.frame = _images.bounds;
gradientMask.colors = @[(id)[UIColor whiteColor].CGColor,
(id)[UIColor clearColor].CGColor];
_images.layer.mask = gradientMask;
gradientMask.startPoint = CGPointMake(0.8, 0.0);
gradientMask.endPoint = CGPointMake(0.8, 0.8);
gradientMask.colors = @[(id)[UIColor clearColor].CGColor,
(id)[UIColor whiteColor].CGColor,
(id)[UIColor whiteColor].CGColor,
(id)[UIColor clearColor].CGColor];
gradientMask.locations = @[@0.0, @0.0, @0.8, @1.0];
_images.contentMode = UIViewContentModeScaleAspectFill;
UIBlurEffect *effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
UIVisualEffectView *blur = [[UIVisualEffectView alloc] initWithEffect:effect];
blur.frame = CGRectMake(_images.frame.origin.x, _images.frame.origin.y, _images.frame.size.width, _images.frame.size.height +50);
[_images addSubview:blur];
[UIView animateWithDuration:.1 animations:^{
blur.alpha = .7;
}];
}
您正在呼叫:
gradientMask.frame = _images.bounds;
在 viewDidLoad()
中。那时,自动布局尚未布局所有视图,因此您的 _images.bounds
与故事板中的内容相匹配。
结果是图像视图的右侧被遮蔽了,因为渐变层没有覆盖它。
您需要在 自动布局完成后将渐变蒙版创建/调整大小移动到一个点 ,或者我建议的是子类化 UIImageView
在那里添加渐变蒙版,并让它在 layoutSubviews()
.
编辑:作为旁注,您不应该在 viewDidLoad()
中放置视图动画 - 很可能您甚至看不到它。
试试这个....
1.first select phone 你需要,如果你需要 iPhone 8 那么 select 模拟器 iPhone 8 及以下MainStoryboard 有一个选项 select phone 它的方向然后 select 视图 iPhone 8. 2.place ViewController 中的图像 3.then 在 Xcode select 图像的一侧,然后是自动调整大小选项 select 水平线和垂直线(打勾)。
然后运行你会得到正确的视图。