0

私は UIAlertView 内に UITableView を持っていますが、今では本当に醜いコーナーがいくつか表示されています。willPresentAlertView() でアラートビューのサイズを拡大しました。

#define ALERT_VIEW_WIDTH 750
#define ALERT_PADDING 20
- (void)willPresentAlertView:(UIAlertView *)alertView {
    {
        NSLog(@"%@", [[alertView class] description]);

        id thing;
        if ( [[[alertView class] description] isEqualToString:@"UIAlertTableView"]){ //change the alert view size
            NSLog(@"center: %f", alertView.center.x);

            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.center.x, v.frame.origin.y, 100, v.frame.size.height-10);
                }
                if([[[thing class] description] isEqualToString:@"UILabel"])
                {
                    //UIView* v=(UIView*)thing;
                    //v.frame=CGRectMake(center-v.frame.size.width/2, v.frame.origin.y, v.frame.size.width, v.frame.size.height);
                }
            }
            alertView.frame=CGRectMake(center, alertView.frame.origin.y, ALERT_VIEW_WIDTH, 360);

        }        

    }
}

これはどのように修正できますか?ありがとう! ここに画像の説明を入力

4

1 に答える 1

1

内容を再描画するのではなく、単に引き延ばしたように見えます。フレームの変更によって再描画がトリガーされるように、再描画が必要であることを伝えるか ( [alertView setNeedsDisplay])、コンテンツ モードを再描画に設定する必要があります。

余談ですが、このプライベート ビュー階層のナビゲーションは非常に壊れやすいものです。これが不思議なことに機能しなくなるのに、iOS に大きな変更を加える必要はありません。

于 2012-07-10T11:11:51.170 に答える