横向模式下的UIAlertView不显示消息

时间:2011-11-09 01:17:21

标签: uialertview

  

可能重复:
  UIAlertView not showing message text

我正在尝试在横向模式下为应用创建一个简单的UIAlertView,但我看到的只是标题和按钮,但没有实际消息。

它与屏幕上可用于UIAlertView的空间有关,就好像我删除了几个按钮,然后消息显示正常。

有没有办法强制UIAlertView自行调整大小以适应?

相关代码在这里

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Free Update",nil) 
                                                message:NSLocalizedString(@"There is a new version of this app available in the App Store. Download it now.",nil) 
                                               delegate:self 
                                      cancelButtonTitle:NSLocalizedString(@"Don't remind me",nil)
                                      otherButtonTitles:NSLocalizedString(@"Download",nil), NSLocalizedString(@"Remind me later", nil), nil];
[alert show];
[alert release];

这就是结果:

enter image description here

2 个答案:

答案 0 :(得分:8)

有点脏,但它有效:o)只需将UILabel添加到UIAlertView

UILabel *messageLabel = [[UILabel alloc] initWithFrame:CGRectMake( alert.frame.origin.x + 10, 16, 260, 70)];
messageLabel.backgroundColor = [UIColor clearColor];
messageLabel.text = @"Your message";
messageLabel.textColor = [UIColor whiteColor];
messageLabel.lineBreakMode = UILineBreakModeWordWrap;
messageLabel.numberOfLines = 2;
messageLabel.font = [UIFont systemFontOfSize:12];
messageLabel.textAlignment = UITextAlignmentCenter;
[alert addSubview:messageLabel];

另一个肮脏的黑客,以在标题和按钮之间获得更多空间。

- (void)willPresentAlertView:(UIAlertView *)alertView {
    float moreSpace = 20.0f;

    alertView.frame = CGRectMake(alertView.frame.origin.x, alertView.frame.origin.y - moreSpace
                             ,alertView.frame.size.width, alertView.frame.size.height + moreSpace*2 + 10.0f);

    for ( UIView *view in [alertView subviews] ) {
        if ( (view.class != UILabel.class ) && ( view.class != UIImageView.class ) ) {
            [view setTransform:CGAffineTransformMakeTranslation(0, moreSpace * 2)];
        }
    }
}

答案 1 :(得分:0)

最后,我们不得不从警报视图中删除其中一个按钮,使其在横向模式下工作。