【发布时间】:2013-08-03 19:26:18
【问题描述】:
我的 View 上有一些 imageView,现在我想更改 imageView 中图像的 background.color。通过在同一个 imageView 上单击第二次,它应该会变为第一张图像。
我该怎么做?
【问题讨论】:
标签: ios objective-c macos ipad
我的 View 上有一些 imageView,现在我想更改 imageView 中图像的 background.color。通过在同一个 imageView 上单击第二次,它应该会变为第一张图像。
我该怎么做?
【问题讨论】:
标签: ios objective-c macos ipad
保留 BOOL 或枚举 ivar 以跟踪图像状态。对点击做出反应时,交换图像。
你可以有一个自定义的图像视图子类来保持这个状态总是与正确的对象相关联。
// .h
typedef enum { StateOriginal, StateFlipped } FlipState;
@interface FlippableImageView : UIImageView
@property (nonatomic, assign) FlipState state;
@end
// in view controller
if (flipImageView.state == StateOriginal) {
flipImageView.image = imageFlipped;
flipImageView.state = StateFlipped;
}
else {
flipImageView.image = imageOriginal;
flipImageView.state = StateOriginal;
}
该类还可以同时保存两个图像并运行漂亮的动画...
【讨论】:
你可以有一个变量来检查你的 ImageView 被触摸了多少次。 这可以更改:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
if (touch.view == imageView) {
// Make that variable ++;
if (variable == 2){
imageView.image = [UIImage imageNamed:@"a.png"];
}
}
}
【讨论】: