UIAlertController - iOS 8 - iPad - 无法正确居中

时间:2015-08-08 21:28:36

标签: ios ipad uialertcontroller

我正在尝试使用一些操作按钮显示UIAlertController。它在iPhone上工作正常,因为它从设备的底部弹出。我的ipad有问题,UIAlertController没有正确居中。它显示右侧有点偏。我可以通过减去150f来减去x坐标。有没有办法让它成为中心?

   UIAlertController * view=   [UIAlertController
                             alertControllerWithTitle:@"My Title"
                             message:@"Select your Choice"
                             preferredStyle:UIAlertControllerStyleActionSheet];

UIAlertAction* ok = [UIAlertAction
                     actionWithTitle:@"OK"
                     style:UIAlertActionStyleDefault
                     handler:^(UIAlertAction * action)
                     {
                         //Do some thing here
                         [view dismissViewControllerAnimated:YES completion:nil];

                     }];
UIAlertAction* cancel = [UIAlertAction
                         actionWithTitle:@"Cancel"
                         style:UIAlertActionStyleDefault
                         handler:^(UIAlertAction * action)
                         {
                             [view dismissViewControllerAnimated:YES completion:nil];

                         }];


[view addAction:ok];
[view addAction:cancel];



view.popoverPresentationController.sourceView = self.view;
view.popoverPresentationController.sourceRect = CGRectMake(self.view.bounds.size.width / 2.0, self.view.bounds.size.height / 2.0, 0.0, 0.0);
[self presentViewController: view animated:YES completion:nil];

1 个答案:

答案 0 :(得分:1)

如果您有简单的操作,那么最好使用Alertstyle,它会自动居中,或者如果您坚持使用Actionsheet样式,请尝试设置popoverPresentationController.permittedArrowDirections = 0这对于固定方向很有效但是失败如果你在iPad中旋转。

// Alert
- (void) showAlert
{
    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"TEst" message:@"test Message" preferredStyle:UIAlertControllerStyleAlert];
    UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {

    }];

    [alertController addAction:cancelAction];


    [[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:alertController animated:YES completion:nil];
}