0

我在 uialertview 中显示一个表格视图,周围出现一条奇怪的白线。我曾尝试更改内容模式,然后调用 [alertView setNeedsDisplay],但它似乎不起作用。 在此处输入图像描述

有人可以帮忙吗?谢谢。

// 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];
        }        
    }
}
4

1 回答 1

0

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

来自 Apple 的用户界面指南:

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

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

然而,在一个更有用的注释中...... UIAlertViews 总是有那个白色边框。然而,由于你如此大幅度地增加视图的大小,这条线被拉长了。这是一个普通的 UIAlertView,你可以看到这条线有多大:

UIAlertView 图像

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

但是,如果您真的想摆脱白色边框,您可能必须继承 UIAlertView 并覆盖它的 drawrect 以自己进行绘图。

于 2012-07-10T13:23:17.637 回答