我正在使用UIButtons
使用图片。
现在我希望能够在点击时在该按钮上方设置另一个UIImage
,并在再次点击该按钮时将其删除。
列表的某种复选标记。
修改
按钮上的图像是来自手机记忆库的图像。我不能只是将图像更改为另一个,因为图像是从内存加载而不是外部资源。所以我需要在推动的所有按钮上方放置一些固定的图像。
UIButton
添加到之前的吗?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];
答案 0 :(得分:0)
嗯..你可以用多种选择来做到这一点:
1.在按钮上方添加UIImageView
,然后将UITapGestureRecognizer
添加到图片视图,方法是在第二次点击时将其删除。
2.您也可以使用按钮的backgroundColor,其图案图像与您的按钮完全吻合(以避免重复)
3.使用CGImageRef
答案 1 :(得分:0)
你绝对应该使用UIButton提供的API:setImage:forState:
和UIControlStateSelected(一旦你点击它就按钮应该得到的状态)/ UIControlStateNormal。
按钮可以是highlighted
或selected
。突出显示的是当你按下它时(一旦触摸停止就消失),而选择在第一次触摸后设置为YES,在第二次触摸时设置为NO。
答案 2 :(得分:0)
由于您有自定义按钮,因此最佳解决方案是根据您拥有的复选框的状态更改按钮的图像(您提到的想法是创建类似复选框按钮的内容)。
UIButton类中有一个名为“setImage:forState:”的方法。您可以使用上述方法更改按钮内的图像。 查看更多信息here
示例我如何看待代码(您可以通过另一种方式看到它):
// 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];
}