我有一台UIPopovercontroller。用这种方式来呈现它。
BackupPop *backupPop = [[BackupPop alloc] initWithNibName:nil bundle:[NSBundle mainBundle]];
backupPop.delegate = self;
backupPop.navigationItem.title = [Language get2:@"Backup"];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:backupPop];
assigningBackupRow = button.tag;
backupPopController = [[UIPopoverController alloc] initWithContentViewController:navController];
backupPopController.popoverContentSize = CGSizeMake(200, 150);
CGRect rect = CGRectMake(button.frame.origin.x, button.frame.origin.y + 20 + (button.tag - 30000) * 44, button.frame.size.width, button.frame.size.height);
[backupPopController presentPopoverFromRect:rect inView:backupTable permittedArrowDirections:UIPopoverArrowDirectionRight animated:YES];
在UIPopovercontroller中,我在viewdidload中有一个UITableView。
funcTable = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 200, 80) style:UITableViewStylePlain];
[funcTable setDelegate:self];
[funcTable setDataSource:self];
[funcTable setRowHeight:44];
[funcTable setBackgroundColor:[UIColor clearColor]];
[self.view addSubview:funcTable];
iOS8的问题是,虽然我的UITableView的高度是80px,但它只显示为40px。UITableView的起始位置是正确的,但高度不正确。现在,我必须将UIPopoverController中的所有UITableView的高度设置为120px。在iOS7中没有这样的问题。伙计们,有什么想法吗?谢谢。
发布于 2014-09-27 02:16:18
尝尝这个
iOS 8有一个名为UIPopoverPresentationController的新PopOverController
UIStoryboard *storyboard = UIStoryboard storyboard instantiateViewControllerWithIdentifier:@"Terms_NC";:@“Main”捆绑包:nil;UINavigationController *navController =storyboard storyboard
navController.preferredContentSize = CGSizeMake(300, 290);
// Present the view controller using the popover style.
navController.modalPresentationStyle = UIModalPresentationPopover;
[self presentViewController:navController animated: YES completion: nil];
// Get the popover presentation controller and configure it.
UIPopoverPresentationController *presentationController =
[navController popoverPresentationController];
presentationController.permittedArrowDirections =0;
presentationController.sourceView = self.view;
presentationController.sourceRect = CGRectMake(100, 100, 300, 340);
发布于 2014-09-17 14:44:04
我也有同样的问题。我所做的就是在展示我的popover之前再次明确地设置了tableview的大小。
[backupPop adjustFrame];
backupPopController.popoverContentSize = backupPop.view.frame.size;
[backupPopController presentPopoverFromRect:rect inView:backupTable permittedArrowDirections:UIPopoverArrowDirectionRight animated:YES];
您还可以在backupPop中添加方法
- (void)adjustFrame {
CGRect frame = self.view.frame;
frame.size.height = 80
frame.size.width = 200;
self.view.frame = frame;
}
让我知道这是否有帮助。
发布于 2014-09-27 01:15:19
可能它的变通方法是在很小的延迟后设置内容大小。
dispatch_after(dispatch_time(DISPATCH_TIME_NOW,(int64_t)(0.01 * NSEC_PER_SEC)),dispatch_get_main_queue(),^{ self.popoverController setPopoverContentSize:CGSizeMake(300,340)动画:是;});
https://stackoverflow.com/questions/25822859
复制相似问题