等效 [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