等效 [UIPopoverController setContentViewController:(UIViewController *) 动画:(BOOL)];适用于 iOS8

Posted

技术标签:

【中文标题】等效 [UIPopoverController setContentViewController:(UIViewController *) 动画:(BOOL)];适用于 iOS8【英文标题】:equivalent [UIPopoverController setContentViewController:(UIViewController *) animated:(BOOL)]; for iOS8 【发布时间】:2014-09-26 00:40:43 【问题描述】:

ios8 中设置 UIPopoverController 大小的正确方法是什么

在 iOS7 中是

[UIPopoverController setContentViewController:(UIViewController *) animated:(BOOL)];

现在不行了

提前致谢


编辑:将我的一段代码和两个结果(iOS7.1 和 iOS8)放在这里

DetalleTarjetaVC *controller     = [self.storyboard instantiateViewControllerWithIdentifier:@"DetalleTarjetaVC"];

            UINavigationController                      *navController;
            navController                               = [[UINavigationController alloc] initWithRootViewController:controller];
            navController.toolbarHidden                 = FALSE;
            navController.navigationBar.translucent     = FALSE;
            navController.toolbar.translucent           = FALSE;
            navController.navigationBar.barTintColor    = UIColorFromRGBWithAlpha(toolbarTintColor, 0.95);
            navController.navigationBar.barStyle        = UIBarStyleBlack;
            navController.toolbar.barTintColor          = UIColorFromRGBWithAlpha(toolbarTintColor, 0.95);
            navController.toolbar.barStyle              = UIBarStyleBlack;



            controller.view.backgroundColor = UIColorFromRGBWithAlpha(0XFFFFFF, 1);

            tarjetasPopover = [[UIPopoverController alloc] initWithContentViewController:navController];


            CGRect rect     = button.frame;
            CGPoint coord   = [button convertPoint:button.frame.origin toView:self.tableView];
            rect.origin.y   = coord.y -20;

            [tarjetasPopover setPopoverContentSize:CGSizeMake(530, 400) animated:YES];
            [tarjetasPopover presentPopoverFromRect:rect
                                             inView:self.view
                           permittedArrowDirections:UIPopoverArrowDirectionLeft
                                           animated:YES];

【问题讨论】:

【参考方案1】:

有些东西可以帮助你

        int iOSVersion = [[[UIDevice currentDevice]systemVersion] intValue];

        if (iOSVersion >= 8) 
            controller.preferredContentSize = CGSizeMake(530, 312);
        
        else
            [tarjetasPopover setPopoverContentSize:CGSizeMake(530, 400) animated:YES];
        

iOS8 的高度降低了 88.0,因为您必须考虑工具栏和导航控制器的宽度(每个 44 像素)以获得相同的大小

【讨论】:

【参考方案2】:

该方法在 iOS8 中没有被替换。你只需要在之前分配一个istance,就像这样:

 UIPopoverController *yourPopoverController = [[UIPopoverController alloc] init];

然后你可以使用:

 [yourPopoverController setContentViewController:yourViewController animated:YES];

或者您可以轻松地在 UIPopoverController Init 上传递 viewController:

UIPopoverController *popoverController = [[UIPopoverController alloc] initWithContentViewController:yourViewController];

希望对您有所帮助。

【讨论】:

以上是关于等效 [UIPopoverController setContentViewController:(UIViewController *) 动画:(BOOL)];适用于 iOS8的主要内容,如果未能解决你的问题,请参考以下文章

s-s-rS - 用于计算当前日期匹配或(参数选择日期)与其他一些等效列的行的表达式

s-s-rS - Group_Concat 使用表达式等效?

javascript 是不是具有等效于 C#s HttpUtility.HtmlEncode 的功能? [复制]

UIPopoverController 上的 UIPopoverController

C# 等效于 vcclr.h 中存在的 PtrToStringChars(String s) 函数

C# 等效于 Java 标点正则表达式