0

1番目:Xcodeバージョン4.6(4H127)、シミュレーター6.1

だから...私は次のことをします。ペン先からロードされた私のボタン(UIButtonから継承)。次に、UIControlStateNormalの画像を設定しました。私はこのようなものを持っています: ボタン

その後、私はそれを無効にする必要があります:

[button setImage:nil forState:UIControlStateNormal];

それから私はこれを見ます: 誤ったボタン

差分を確認してください:

ボタン

誤ったボタン

そのため、タイトルは正しくレイアウトされていますが、画像はまだそこにあります...

また、私が以下を行う場合:

[button setImage:[UIImage new] forState:UIControlStateNormal];

2番目のような結果が得られますが、画像はありません(予想どおりですが、完全ではありませんが、レイアウトなしで):

新しいイメージ

ここで何が起こっているのか本当に興味がありますか?その本当に興味深い、mbアップルは何かを壊しましたか?それとも私はすべて間違ったことをしているだけですか?しかし、私は何度もそれを行いました(画像の設定-> nil)、すべてうまくいきました。

読んでいただきありがとうございます:)助けていただければ幸いです。

4

2 に答える 2

0

これはここにありました: UIButton の私のサブクラスは、いくつかの基準を使用して imageView.hidden を設定する -layoutSubviews をオーバーライドします。したがって、非表示のプロパティが YES の場合、setImage:forState を呼び出すと、このバグが発生しました。

私の修正は次のとおりです。非表示の代わりにアルファプロパティを使い始めました。(それが汚いことは知っていますが、これが私が見つけた最速の方法です)

于 2013-03-15T03:48:01.817 に答える
0

これに関するサンプルコードを書きました。

あなたの両方の呼び出しはうまくいきました

 [self.myCustomButton setImage:nil forState:UIControlStateNormal];
 [self.myCustomButton setImage:[UIImage new] forState:UIControlStateNormal];

BackGroundImageの代わりに を設定してもよいと思いますimage

ここに画像の説明を入力

サンプルメソッド

-(IBAction)removeImage:(id)sender{

    [self.myCustomButton setImage:nil forState:UIControlStateNormal];
    //[self.myCustomButton setImage:[UIImage new] forState:UIControlStateNormal];
}

-(IBAction)setImage:(id)sender{

    [self.myCustomButton setImage:[UIImage imageNamed:@"Button_Disable.jpg"] forState:UIControlStateNormal]; 
}
于 2013-03-14T18:13:28.647 に答える