Xcode中:如何改变在影像(同一位置)触摸图片?
-
19-09-2019 - |
题
简单地说,我已经在一个UIView放置的图像与所述界面生成器。现在我想运行时,我触摸该图像的方法/功能,例如,当另一图像应该被加载。
我的代码:
- (void)touchesended:(NSSet*) touches withEvent:(UIEvent *)event
{
// UITouch *touch = [touch anyObject];
bild_1_1.image = [UIImage imageNamed:@"t_1_4.jpg"];
}
解决方案
您需要您处理触摸事件的UIView。要做到这一点,你应该创建的UIView的子类,并添加的touchesBegan您实现:withEvent:方法方式,在这里最简单的例子:
// TouchSimpleView.h
@interface TouchSimpleView : UIImageView {
id delegate;
}
@property(retain) id delegate;
@end
@interface NSObject(TouchSimpleView)
-(void)didTouchView:(UIView *)aView;
@end
// TouchSimpleView.m
#import "TouchSimpleView.h"
@implementation TouchSimpleView
@synthesize delegate;
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"touchesBegan!!! ");
if ( delegate != nil && [delegate respondsToSelector:@selector(didTouchView:)] ) {
[delegate didTouchView:self];
}
[super touchesBegan:touches withEvent:event];
}
@end
然后,可以当要处理的触摸,使用视图这个类的例如:
- (void)applicationDidFinishLaunching:(UIApplication *)application {
[window makeKeyAndVisible];
touchView = [[TouchSimpleView alloc] initWithFrame:CGRectMake(50, 50, 200, 300)];
touchView.delegate = self;
[window addSubview:touchView];
imageView =[[UIImageView alloc] initWithFrame:touchView.frame];
imageView.image = [UIImage imageNamed:@"image1.png"];
[touchView addSubview:imageView];
}
-(void)didTouchView:(UIView *)aView{
NSLog(@"view touched, changing image");
imageView.image = [UIImage imageNamed:@"image2.png"];
}
其他提示
你想要什么可以放置的UIButton,而不是UIImage的使用方法了setBackgroundImage改变它的背景图片很容易做到:forState:在TouchUpInside事件处理程序
另一种解决方案:
在h文件
代替 IBOutlet中UIImagView *的ImageButton;
和
-(IBAction)doSomething:(id)sender;
在.m文件
-(IBAction)dosomething:(id)sender {
// your code
[imageButton setImage:[UIImage imageNamed:@""t_1_4.jpg"} forState:UIControlStateNormal];
}
工作在我的代码很细
这与我的工作,而无需创建子类,在.h文件中添加的UIImageView
#import <UIKit/UIKit.h>
@interface YourClassName : UIViewController{
IBOutlet UIImageView *wallpaper;
}
@property (nonatomic, retain) IBOutlet UIImageView *wallpaper;
@end
然后.M你可以用你的方法
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[wallpaper setImage:[UIImage imageNamed: @"image.png"]];
}
不隶属于 StackOverflow