1. Target-Action设计模式的写法?
1.1 创建MyButton类
1.2 在MyButton.h文件中声明了添加事件的方法
1.3 写延展,声明私有的实例变量(_target / _action / _controlEvents)
1.4 实现addTaregt:action:forControlEvents:内部,将参数的值,赋给实例变量
1.5 在touchesEnded:withEvent:方法内部,使用_target去执行_action消息
- (void)addTarget:(id)target
action:(SEL)action
forControlEvents:(UIControlEvents)controlEvents
{
_target = target;
_action = action;
_controlEvents = controlEvents;
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
// 判断触发方式是否一致
if (_controlEvents == UIControlEventTouchUpInside) {
// 通过target执行action消息
[_target performSelector:_action withObject:self];
}
}
2. Delegate设计模式的写法?
2.1 创建MyTextField
2.2 在MyTextField.h 文件中声明了 MyTextFieldDelegate 协议(@class)
2.3 声明 delegate 属性 (id<MyTextFieldDelegate>)
// 给MyTextField对象设置代理
_rootView.myTextField1.delegate = self;
2.4 实现touches的三个方法
// 实现协议方法
- (void)textFieldBeganEdit:(MyTextField *)textField
{
NSLog(@"Begin edit!");
}
2.4.1 判断_delegate对象是否存在,并且能够响应协议中的方法
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
if (_delegate != nil && [_delegate respondsToSelector:@selector(textFieldBeganEdit:)]) {
[_delegate textFieldBeganEdit:self];
}
}
2.4.2 给 _delegate 对象发送代理方法
3. UIImageView播放动画?
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 200, 375, 300)];
imageView.image = [UIImage imageNamed:@"img_01"];
[self addSubview:imageView];
NSMutableArray *imagesArray = [NSMutableArray array];
for (int i = 0; i <14; i++) {
NSString *imgName = [NSString stringWithFormat:@"img_%d.tiff", i];
UIImage *image = [UIImage imageNamed:imgName];
[imagesArray addObject:image];
}
// 将存放所有图片的数组放入animationImages属性中
imageView.animationImages = imagesArray;
imageView.animationDuration = 1;
// imageView.animationRepeatCount = 1000;
// 播放动画
[imageView startAnimating];
4. 手势的使用?
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
// 1. 轻拍手势
UITapGestureRecognizer *tapGR = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGRAction:)] autorelease];
// tapGR.numberOfTapsRequired = 2; // 设置点击多少次的手势
tapGR.numberOfTouchesRequired = 2; // 设置多少根手指
[_rootView.imageView addGestureRecognizer:tapGR];
// 2. 捏合手势
UIPinchGestureRecognizer *pinchGR = [[[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchGRAction:)] autorelease];
[_rootView.imageView addGestureRecognizer:pinchGR];
}
- (void)pinchGRAction:(UIPinchGestureRecognizer *)sender
{
NSLog(@"Shrink");
// transform 属性可以控制视图的缩放比例
// 在原始的基础上进行缩放
// _rootView.imageView.transform = CGAffineTransformMakeScale(sender.scale, sender.scale);
// 在给定的基础上进行缩放
_rootView.imageView.transform = CGAffineTransformScale(_rootView.imageView.transform, sender.scale, sender.scale);
// 保证每次缩放的比例都是相对于当前大小的比例
sender.scale = 1.0;
}
- (void)tapGRAction:(UITapGestureRecognizer *)sender
{
NSLog(@"Pain!");
}
5. 摇晃的方法?
motion.....