[英]Can we load an XIB with auto layout as a subview of a view created programmatically without auto layout and have the subview resize with parent view?
背景:
場景:我有一個以編程方式創建的超級視圖,它出現在應用程序的所有屏幕中。 現在我嘗試加載一個 XIB 並將其作為子視圖分配給這個超級視圖。 它在 iPhone 中看起來不錯(因為 XIB 是按照 iPhone 尺寸設計的)。 但是在 iPad 中,使用相同的 XIB,子視圖保持 iPhone 尺寸。
這個設置有什么辦法可以在 iPad 上工作,讓 XIB 調整大小以填充屏幕而不在子視圖和超級視圖之間設置約束?
如果您認為有幫助,我會發布現有的約束。
您可以通過在添加子視圖時設置子視圖的框架或以編程方式向子視圖添加約束來實現它。
享受.. :)
在以編程方式創建視圖后,您應該從 xib 為視圖添加約束。 將其視為主視圖的常規子視圖。 所以
從 xib 創建您的視圖
UIView *someView = [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([YOUR_VIEW_CLASS_NAME class]) owner:self options:nil] lastObject];
將其添加為子視圖
[yourSuperview addSubview: someView];
為頂部、底部、左側、右側添加約束
NSDictionary *views = @{@"someView":self.background};
[yourSuperview addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"H:|[someView]|"
options:0
metrics:nil
views:views]];
[yourSuperview addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"V:|[someView]|"
options:0
metrics:nil
views:views]];
[someView setNeedsLayout];
調用更新[someView setNeedsLayout];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.