![](/img/trans.png)
[英]When are UIView size classes applied, for a UIView loaded directly from a Xib?
[英]Can't change size and position for UIView loaded from xib
我有一個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
。
在自動布局中,您必須更改約束而不是框架。 只需將視圖約束作為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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.