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 のユーザー インターフェイス ガイドラインから:

「長すぎる警告メッセージを作成しないでください。可能であれば、メッセージを 1 行または 2 行で表示できるように短くしてください。メッセージが長すぎると、スクロールしてしまい、ユーザー エクスペリエンスが低下します。」

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 に答える