簡體   English   中英

ios7-在另一個視圖上顯示視圖控制器,但不全屏顯示

[英]ios7 - showing a view controller on top of another but not in full screen

當我按下視圖控制器上的按鈕時,我想在其頂部顯示另一個控制器,但要在中間而不是全屏顯示。

我如何以這種方式將控制器呈現在另一個控制器之上?

如果要在iPad上嘗試,則始終可以設置一個包含新視圖的Popover。

UIYourNewViewController *vc = [[UIYourNewViewController alloc] init];

UIPopoverController *popVc = [[UIPopoverController alloc] initWithContentViewController:vc];
[popVc setPopoverContentSize:*the size that you want or your resized vc*];
[popVc presentPopoverFromRect:*position of the screen you want to show the popover* inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];

這樣,您將創建一個viewcontroller視圖大小的Popover,然后可以將其彈出到所需的位置。 為了確保它也可以在iPhone上使用,您應該為UIPopoverController創建一個類別,然后在.m中添加此方法。

+ (BOOL)_popoversDisabled {
return NO;

}

請記住在類別的.h中聲明該方法。

您需要在呈現此屬性之前將其設置為控制器。

controller.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentViewController:controller animated:YES completion:nil];

是的,可能必須向視圖控制器視圖顯示動畫。 請參考下面的代碼。 您會從屏幕底部到屏幕中間看到一些顯示動畫的想法。

YourViewController *viewController = [[YourViewController alloc] init];
    [viewController.view setFrame:CGRectMake(0, -(CGRectGetHeight(viewController.view.frame)), CGRectGetWidth(viewController.view.frame), CGRectGetHeight(self.view.frame))];

    [self.view addSubview:viewController.view];
    [UIView animateWithDuration:0.8 animations:^{

        [viewController.view setFrame:CGRectMake(0, 0, CGRectGetWidth(viewController.view.frame), CGRectGetHeight(viewController.view.frame))];

    } completion:^(BOOL finished) {
        [self.navigationController pushViewController:viewController animated:NO];
    }];

在iPhone中,呈現UIViewController始終是全屏的。 在iPad上,您可以使用UISplitViewController或構建自定義容器,但是您顯示的視圖控制器將同時填充UISplitViewController和自定義容器控制器中的容器。

要僅在屏幕的一部分上顯示內容,可以將UIView設置為視圖控制器的動畫。 有多種方法可以呈現視圖控制器,但仍然可以在其后顯示另一個視圖控制器,但是不建議這樣做。

請查看此其他問題 ,以獲取有關創建自定義容器視圖控制器的更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM