我正在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];
}
}
}
答案 0 :(得分:0)
我知道这绝不是人们想要听到的答案......但是显示大量数据通常不是UIAlertView的目的。
来自Apple的用户界面指南:
“避免创建太长的警报消息。如果可能,请将消息保持足够短以显示在一行或两行上。如果消息太长则会滚动,这不是一个好的用户体验。”
然而,在一个更有用的说明... UIAlertViews总是有白色边框。但是,由于你如何大幅增加视图的大小,这条线正在变得越来越大。这是一个普通的UIAlertView,你可以看到这条线有多大:
我的主要建议是重新设计你想要做的任何事情,这样你就不必在UIAlertView中显示一条巨大的信息,因为它在大多数情况下并不合适。
但是,如果你真的想要摆脱白色边框,你可能需要继承UIAlertView并覆盖它的drawrect来自己做绘图。