標籤:
一、iPad
1、判斷是否在iPad上
BOOL iPad = ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad);
二、UISplitViewController 分割視圖控制器
1、UISplitViewController 分割視圖控制器(頂級視圖,不能放在Nav或者其他視圖中)
(1 可以通過 if (self.splitViewController) 判斷是否是分割視圖中
@property (strong) UISplitViewController *splitViewController;
(2 控制器分為兩部分,0 代表 Master, 1 就是指 Detail
@property (copy) NSArray *viewControllers;
比如說 UIViewController *detailVC = self.splitViewController.viewControllers[1]; 如果我們處在分割視圖中,它會返回detail,否則它會返回nil,這個也可以用來判斷是否在分割視圖中
2、delegate 協議(需要在ViewDidLoad之前就定義好協議,可能是在awakeFromNib)
(1 主要用來控制master和detail何時出現
(2 比如
- (BOOL)splitViewController:(UISplitViewController *)sender shouldHideViewController:(UIViewController *)master inOrientation:(UIInterfaceOrientation)orientation
{
return NO; //從不隱藏左邊的master
}
- (BOOL)splitViewController:(UISplitViewController *)sender shouldHideViewController:(UIViewController *)master inOrientation:(UIInterfaceOrientation)orientation
{
return UIInterfaceOrientationIsPortrait(orientation);//只在豎屏中隱藏master(對應的detail 的左上方會有一個按鈕可以切換回去,但是如果沒有實現委託協議的話就沒有這個按鈕)
}
- (void)splitViewController:(UISplitViewController *)sender willHideViewController:(UIViewController *)master withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popover
{
barButtonItem.title = master.title;
self.navigationItem.leftBarButton = barButtonItem;//相當於把返回master 的按鈕設定為 UINavigationController的barButtonItem
}
3、master中的點擊如何在detail中響應呢?
(1 通過action,通過prepareSegue一樣
- (IBAction)doit
{
id detailViewController = self.splitViewController.viewControllers[1];
[detailViewController setSomeProperty:...];
}
(2 segue :但是它會更新整個視圖控制器,包括我們設定的上面提到的navigtionItem的按鈕,都會重新設定,所以很一般不採用
三、Popovers彈窗控制器
(不屬於UIViewController,是一個NSObject,主要控制另外一個視圖控制器彈出到螢幕上)
1、獲得要彈出的視圖控制器
@property (nonatomic, strong) UIViewController *contentViewController; //通過先獲得這個要彈出的視圖控制器
2、建立一個Popovers 的 segue
(需要注意的是,你在prepaeForsegue中獲得的segue,是一個UIStoryboardPopoverSegue )
1 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender2 {3 if ([segue isKindOfClass:[UIStoryboardPopoverSegue class]]) {4 UIPopoverController *popoverController =5 ((UIStoryboardPopoverSegue *)segue).popoverController;6 ...7 } }
3、點擊Popovers之外的地方,一般是預設隱藏的,但是如果它是彈窗控制器中這個視圖數組中的視圖的話,並不會消失隱藏
@property (copy) NSArray *passthroughViews;
但是我們可以讓它隱藏:
- (void)dismissPopoverAnimated:(BOOL)animated;
- (void)popoverControllerDidDismissPopover:(UIPopoverController *)sender;
iPad開發(Universal Applications)