3

UIView に UIButton があります。ビューが表示されたときに、ボタン内に表示する画像をプログラムで把握したいと考えています。UIView の drawRect メソッドをオーバーライドし、setImage を使用して目的の画像を表示しました。ただし、ビューが表示されると、目的のイメージが描画される場合と描画されない場合があります。画像がボタンに表示されるようにするには、ビューのどこでもタッチする必要があります。助けてください !

ビューの drawRect メソッドを次に示します。

- (void)drawRect:(CGRect)rect
{
[myButton setImage:[UIImage imageNamed:@"myImage.png"] forState:UIControlStateNormal];
}

すべてがIBに正しく配線されています。画像が一貫して表示される/表示されない理由がわかりません。どうもありがとう。

4

3 に答える 3

5

drawRect をオーバーライドしたくありません。

適切なことは、UIViewController を実装し、viewWillAppear:をオーバーライドすることです。

-(void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self.myButton setImage:[UIImage imageNamed:@"myImage.png"] forState:UIControlStateNormal];
};
于 2009-08-02T22:03:33.267 に答える
2

グラウンドホッグには正しい答えがありますが、コードで実際に何が起こっているのか、そしてなぜそれがうまくいくのかを説明したいと思います.

このdrawRectメソッドは、システムがビュー オブジェクトを画面に表示するたびに呼び出されます。drawRectメソッドでボタン イメージを設定すると、ボタン イメージが変更されますが、システムは既に画面への描画処理を行っているため、次にビューを再描画する必要があるときまで実際の変更は表示されません。この場合、ビュー内の別の場所に触れたとき。

于 2009-08-02T23:21:31.643 に答える
1

説明してくれてありがとう。残念ながら、このコードは別の開発者によるより大きなプロジェクトの一部です。現在のUIViewをUIViewControllerに変更できません。代わりに、ボタンの画像を別の方法で変更しました。所有しているViewControllerのサブビューにUIViewを追加する直前に、ボタンの状態を変更しました。すなわち:私は発行しました

[myButton setImage:[UIImage imageNamed:@"myImage.png"] forState:UIControlStateNormal];

UIViewをサブビューとして追加する直前。すなわち:

[masterViewController.view addSubview:myView];

明らかに、myButtonはmyViewの一部です。助けてくれてありがとう。

于 2009-08-04T13:02:54.850 に答える