调整UIAlertView问题的大小(周围的白线)

时间:2012-07-10 13:07:44

标签: ios uitableview uialertview

我正在uialertview中显示一个表格视图,我周围有一条奇怪的白线。我试图更改内容模式,然后调用[alertView setNeedsDisplay],但它似乎无法正常工作。 enter image description here

有人可以帮忙吗?感谢。

// increase the alertview size, if we are going to show the scope
#define ALERT_VIEW_WIDTH 750
#define ALERT_PADDING 20
- (void)willPresentAlertView:(UIAlertView *)alertView {
    {

        id thing;
        if ( [[[alertView class] description] isEqualToString:@"UIAlertTableView"]){ //change the alert view size
            int center=alertView.center.x-ALERT_VIEW_WIDTH/2;
            for (thing in alertView.subviews)
            {
                NSLog(@"%@", [[thing class] description]);
                if([[[thing class] description] isEqualToString:@"UITableView"])
                {
                    UIView* v=(UIView*)thing;
                    v.frame=CGRectMake(v.frame.origin.x+ALERT_PADDING, v.frame.origin.y, ALERT_VIEW_WIDTH-ALERT_PADDING*3, 250);
                }
                if([[[thing class] description] isEqualToString:@"UIAlertButton"])
                {
                    UIView* v=(UIView*)thing;
                    v.frame=CGRectMake(v.frame.origin.x+ALERT_PADDING, v.frame.origin.y, ALERT_VIEW_WIDTH-ALERT_PADDING*3, v.frame.size.height-10);
                }
                if([[[thing class] description] isEqualToString:@"UILabel"])
                {
                    UIView* v=(UIView*)thing;  
                    v.frame=CGRectMake(v.frame.origin.x+ALERT_PADDING, v.frame.origin.y, ALERT_VIEW_WIDTH-ALERT_PADDING*3, v.frame.size.height);
                }
            }
            alertView.contentMode = UIViewContentModeRedraw;
            alertView.frame=CGRectMake(center, alertView.frame.origin.y, ALERT_VIEW_WIDTH, 360);
            [alertView setNeedsDisplay];
        }        
    }
}

1 个答案:

答案 0 :(得分:0)

我知道这绝不是人们想要听到的答案......但是显示大量数据通常不是UIAlertView的目的。

来自Apple的用户界面指南:

“避免创建太长的警报消息。如果可能,请将消息保持足够短以显示在一行或两行上。如果消息太长则会滚动,这不是一个好的用户体验。”

http://developer.apple.com/library/ios/#documentation/userexperience/conceptual/mobilehig/UIElementGuidelines/UIElementGuidelines.html

然而,在一个更有用的说明... UIAlertViews总是有白色边框。但是,由于你如何大幅增加视图的大小,这条线正在变得越来越大。这是一个普通的UIAlertView,你可以看到这条线有多大:

UIAlertView Image

我的主要建议是重新设计你想要做的任何事情,这样你就不必在UIAlertView中显示一条巨大的信息,因为它在大多数情况下并不合适。

但是,如果你真的想要摆脱白色边框,你可能需要继承UIAlertView并覆盖它的drawrect来自己做绘图。