1

私はUIButtonsそれが画像を使用している。今度UIImageは、ボタンを押したときにそのボタンの上に別のボタンを設定し、もう一度押したときにボタンを削除できるようにしたいと思います。

リストのある種のチェックマーク。

編集:

ボタンの私の画像は電話のメモリからの画像です。画像は外部アセットではなくメモリから読み込まれたため、画像を別の画像に変更することはできません。だから私は押されたすべてのボタンの上にいくつかの固定画像を置く必要があります。

  1. 以前のものの上に別のものとして追加する必要がUIButtonありますか?
  2. 私はそれをそのUIImage上に置くべきUIButtonですか?それでもまだ触れられますか?

最善の方法は何ですか?Thnank。

UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom];
        button.frame = CGRectMake(column*100+10, row*100+10, 92, 92); // distnace related to scroller(not view)
        [button setImage:thumb forState:UIControlStateNormal];
        [button addTarget:self
                   action:@selector(buttonClicked:)
         forControlEvents:UIControlEventTouchUpInside];
4

3 に答える 3

0

ええと..複数のオプションでそれを行うことができます:
1。UIImageViewボタンの上に追加UITapGestureRecognizerし、2回目のクリックでそれを削除する方法で画像ビューに追加します。
2.ボタンにぴったり合うパターン画像でボタンのbackgroundColorを使用することもできます(繰り返しを避けるため)。
3.レイヤーを使用するCGImageRef

于 2013-02-27T10:05:09.413 に答える
0

UIButtonが提供するAPIを確実に使用する必要があります:setImage:forState:UIControlStateSelected(ボタンを1回押すとボタンが取得する状態)/UIControlStateNormal。ボタンはhighlightedまたはにすることができますselected。強調表示されているのは、押しているとき(タッチが停止するとすぐに消えます)で、1回目のタッチでYESに設定され、2回目のタッチでNOに戻ります。

于 2013-02-27T10:05:21.653 に答える
0

カスタムボタンがあるので、最良の解決策は、チェックボックスの状態に応じてボタンの画像を変更することです(チェックボックスボタンのようなものを作成するというアイデアだとおっしゃいました)。

UIButtonクラスには、「setImage:forState:」という名前のメソッドがあります。上記の方法でボタン内の画像を変更できます。詳細はこちら

コードの見方の例(別の方法で見ることができます):

// bool property
@property (assign) BOOL isChecked;
....
// custom button
UIButton *theCheckboxButton = ;
[theCheckboxButton setImage:[UIImage imageNamed:@"Unchecked"] forState:UIControlStateNormal];
[theCheckboxButton setImage:[UIImage imageNamed:@"Checked"] forState:UIControlStateSelected];
[theCheckboxButton addTarget:self action:@selector(checkBoxButtonAction:) forControlEvents: UIControlEventTouchUpInside];
...
// handler
- (void)checkBoxButtonAction:(UIButton *)aCheckBox
{
    self.isChecked = !self.isChecked;
    [aCheckBox setImage:[UIImage imageNamed:(self.isChecked ? @"Checked" : @"Unchecked")] forState:UIControlStateNormal];
    [theCheckboxButton setImage:[UIImage imageNamed:(self.isChecked ? @"Unchecked" : @"Checked")] forState:UIControlStateSelected];
}

編集:

// images from not external resources
@property (strong) UIImage *checkedImage;
@property (strong) UIImage *uncheckedImage;
// bool property
@property (assign) BOOL isChecked;
...
// custom button
UIButton *theCheckboxButton = ;
[theCheckboxButton setImage:self.uncheckedImage forState:UIControlStateNormal];
[theCheckboxButton setImage:self.checkedImage forState:UIControlStateSelected];
[theCheckboxButton addTarget:self action:@selector(checkBoxButtonAction:) forControlEvents: UIControlEventTouchUpInside];
...
// handler
- (void)checkBoxButtonAction:(UIButton *)aCheckBox
{
    self.isChecked = !self.isChecked;
    [aCheckBox setImage:self.isChecked ? self.checkedImage : self.uncheckedImage] forState:UIControlStateNormal];
    [theCheckboxButton setImage:(self.isChecked ? self.uncheckedImage : self.checkedImage) forState:UIControlStateSelected];
}
于 2013-02-27T10:34:19.077 に答える