我有一個帶有背景圖像和標題標題的視圖控制器。這個觀點大部分時間都是一樣的。我有不同的孩子的意見,我會顯示和隱藏在這個viewcontroller裏面。同一容器視圖中的多個視圖使用情節提要
我怎樣才能實現這個使用故事板?
- 我是否必須爲每個子視圖創建單獨的xib?
- 或者我是否在同一視圖控制器中創建單獨的視圖並根據需要隱藏和顯示它們?
或者還有其他優雅的解決方案嗎?
謝謝。
我有一個帶有背景圖像和標題標題的視圖控制器。這個觀點大部分時間都是一樣的。我有不同的孩子的意見,我會顯示和隱藏在這個viewcontroller裏面。同一容器視圖中的多個視圖使用情節提要
我怎樣才能實現這個使用故事板?
或者還有其他優雅的解決方案嗎?
謝謝。
通常,您不需要爲每個子視圖創建單獨的xib(技術上,我們可以在同一個故事板上繪製所有視圖控制器)。
隨着隱藏和顯示問題,將子視圖設置爲IBOutlet,然後讓您的代碼決定應該顯示哪個視圖以及應該隱藏哪個視圖。
這將是容易得多,如果你使用container views.
添加container view
滿足您的所有孩子的意見來設計你的UI。 爲您的主View Controller
中的所有子女container views
創建properties
。 在容器view controller
中設計子視圖。 在您的主要view controlle
r中應用業務邏輯以相應地顯示和隱藏子視圖。
添加和刪除子視圖而不是隱藏和顯示會更好。
在同一ViewController
你可以使用addSubView:
添加和removeFromSuperView
刪除意見
添加和刪除子視圖是實現這一目標的最佳途徑。但是如果你用故事板做到這一點,所有重疊的視圖可能看起來很混亂,並且很難管理。
實現此目的的最佳方式是以編程方式添加視圖,並以編程方式設置佈局約束。
UIView *subView = [[UIView alloc]init];
subView.backgroundColor = [UIColor blackColor];
NSDictionary *viewsDictionary = @{@"subView":subView};
NSDictionary *metrics = @{@"offset":@20};
NSArray *heightConstraint = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-offset-[subView]-offset-|"
options:0
metrics:metrics
views:viewsDictionary];
NSArray *widthConstraint = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-offset-[subView]-offset-|"
options:0
metrics:metrics
views:viewsDictionary];
[self.view addConstraints:heightConstraint];
[self.view addConstraints:widthConstraint];
以上例如將添加子視圖嘩嘩已頂部,底部,前緣和後空間從視圖控制器的主視圖設置爲20的代碼。
請看看這個教程:http://stackoverflow.com/questions/16884879/how-to-use-a-container-view-in-ios –