目标是无论我处于纵向模式还是lanscape模式,我的图像将位于超级视图左边缘的20处,而viewHolder也将位于超级视图底边的20处。
我正在做的是
ViewController.h
@property (strong, nonatomic) IBOutlet NSLayoutConstraint *verticalConsImage;
@property (strong, nonatomic) IBOutlet UIImageView *imageView;
@property (strong, nonatomic) IBOutlet UIView *viewHolder;
@property (strong, nonatomic) IBOutlet NSLayoutConstraint *bottomConsViewHolder;
@property (strong, nonatomic) IBOutlet NSLayoutConstraint *topConsViewHolder;
ViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
[self.view removeConstraint:self.verticalConsImage];
[self.view removeConstraint:self.topConsViewHolder];
[self.view removeConstraint:self.bottomConsViewHolder];
//the position of the imageView left edge is equal of the superview’s left edge plus 20.
self.verticalConsImage = [NSLayoutConstraint
constraintWithItem:self.imageView
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeLeading
multiplier:1.0f
constant:20.0f];
// add it again to the view
[self.view addConstraint:self.verticalConsImage];
//the position of the viewHolder's bottom edge is equal of the superview’s bottom edge plus 20.
self.bottomConsViewHolder = [NSLayoutConstraint
constraintWithItem:self.viewHolder
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeBottom
multiplier:1.0f
constant:20.0f];
// add it again to the view
[self.view addConstraint:self.bottomConsViewHolder];
但是,当我运行应用程序时,viewHolder在纵向或lanscape中根本不显示。图片如下
我在这里缺少的,如果您对此有任何想法,请提供帮助。感谢
答案 0 :(得分:1)
您需要从黄色突出显示的视图中删除约束到IB中视图的顶部,并删除所有代码,不需要它。如果系统不允许你删除该约束,那是因为该视图没有内在大小,所以你需要先给它一个固定的高度,然后删除顶部约束。
我认为你的视图消失的原因是因为在4英寸屏幕上的IB中设置了2个约束,并且模拟器使用的是3.5英寸屏幕,因此为了保持这些约束,唯一可以改变的是视图的高度,可能设置为零或以下。