我有UICollectionView
,顶部是深灰色区域。在这个灰色区域,我需要使用UIView
标记。因为我需要网点,所以UIView
有自己的TabsViewController
。无论我做什么,我想要添加的视图始终位于左上角,具有奇怪的偏移和大小。
我试图改变它的大小和位置,或者把它放在不同的视图之上 - 它总是给出相同的视觉效果。
自动布局已开启。此视图的高度应为72和100%。
TabsViewController *tabs = [[TabsViewController alloc] init];
CGSize screen = // returns correct screen size
tabs.view.frame = CGRectMake(0, 0, screen.width, 72);
[self.collectionView addSubview:tabs.view];
我尝试从多个地方调用上面的代码,包括viewDidLoad
,viewWillAppear
,viewDidLayoutSubviews
和viewDidAppear
。
答案 0 :(得分:0)
在自动布局中,您必须更改约束而不是框架。 只需将视图约束连接到代码nslayoutconstrains,然后尝试更改约束以编程方式设置视图。
将IB视图的约束连接到代码作为IBOutlet属性
示例:
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *width;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *hieght;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *topSpace;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *horizontalCenter;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *leftSpace;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *rightSpace;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *verticalCenter;
并将值更改为:
self.width.constant=CURRENT_VALUE_FOR_CONSTRAINT;
self.hieght.constant=CURRENT_VALUE_FOR_CONSTRAINT;
self.topSpace.constant=CURRENT_VALUE_FOR_CONSTRAINT;
self.horizontalCenter.constant=CURRENT_VALUE_FOR_CONSTRAINT;
self.leftSpace.constant=CURRENT_VALUE_FOR_CONSTRAINT;
self.rightSpace.constant=CURRENT_VALUE_FOR_CONSTRAINT;
self.verticalCenter.constant=CURRENT_VALUE_FOR_CONSTRAINT;