我在下面的代码中显示了我的popOverController
iPhone和iPad。
ViewController *vc = [[ViewController alloc]initWithNibName:@"ViewController" bundle:nil];
if ([UIDevice currentDevice].userInterfaceIdiom ==
UIUserInterfaceIdiomPad) {
vc.preferredContentSize = CGSizeMake(296, 476); //your custom size.
} else {
vc.preferredContentSize = CGSizeMake(252, 436.5);
}
vc.modalPresentationStyle = UIModalPresentationPopover;
vc.popoverPresentationController.delegate = self;
vc.popoverPresentationController.sourceView = self.view;
vc.popoverPresentationController.sourceRect = CGRectMake(screenWidth / 2, self.view.height / 2, 1, 1);
[self presentViewController:vc animated:YES completion:nil];
UIPopoverPresentationController *popOverController = vc.popoverPresentationController;
popOverController.permittedArrowDirections = 0;
但是,似乎发生了班级规模问题。即使在运行iPad设备时,似乎也在使用iPhone尺寸而不是iPad尺寸。尽管在界面构建器中,它根据所选的设备显示两个不同的按钮大小。
编辑:例如,我有一个带按钮的viewcontroller.xib。根据实际设备,有两种不同的按钮尺寸。在iPhone上,按钮的尺寸为50 x 50.在iPad上,它的尺寸为430 x 430.在界面构建器中,这显示正确。但是,在运行iPad设备时,按钮显示为50 x 50(假设为430 x 430)。
答案 0 :(得分:2)
故事板中的条件约束使用大小类。
iPad上popover呈现的视图控制器上的水平尺寸等级是紧凑的,就像在iPhone上一样。这就是为什么你看到按钮的iPhone尺寸。
要确定这是真的,请将ViewController类中的viewDidAppear:
覆盖为NSLog self.traitCollection
。您将看到水平尺寸类是Compact。
这是有道理的,因为弹出窗口就像iPad上出现的iPhone大小的窗口。事实上,这是一个popover的整个点。