无法更改从xib加载的UIView的大小和位置

时间:2015-05-11 11:28:21

标签: ios objective-c uiview interface-builder

我有UICollectionView,顶部是深灰色区域。在这个灰色区域,我需要使用UIView标记。因为我需要网点,所以UIView有自己的TabsViewController。无论我做什么,我想要添加的视图始终位于左上角,具有奇怪的偏移和大小。

我试图改变它的大小和位置,或者把它放在不同的视图之上 - 它总是给出相同的视觉效果。

自动布局已开启。此视图的高度应为72和100%。

enter image description here

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];

我尝试从多个地方调用上面的代码,包括viewDidLoadviewWillAppearviewDidLayoutSubviewsviewDidAppear

1 个答案:

答案 0 :(得分:0)

在自动布局中,您必须更改约束而不是框架。 只需将视图约束连接到代码,然后尝试更改约束以编程方式设置视图。

将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;

image1 image2