一、UIScrollView缩放控价
1、要实现缩放,需要实现代理设计模式,告诉UIScrollView只能缩放内部控件,
2、实现方法:设置UIScrollView的代理delegate,让代理实现协议,实现协议的方法。
3、当用户尝试缩放时,他会询问代理要缩放哪字控件,发一条消息代理。
#import "ViewController.h"
@interfaceViewController () <UIScrollViewDelegate>//实现代理协议
{
UIImageView *_imageView;//设置全局变量给代理方法用
}
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UIScrollView *scrollView = [[UIScrollViewalloc]init];
scrollView.frame =self.view.bounds;//bounds的位置为零
[self.viewaddSubview:scrollView];
UIImage *image = [UIImageimageNamed:@"big.gif"];
_imageView = [[UIImageViewalloc]initWithImage:image];//初始化后大小为图片大小
[scrollViewaddSubview:_imageView];
scrollView.contentSize = image.size;
scrollView.delegate =self;//设置控制器为代理,让控制器实现协议
scrollView.maximumZoomScale =2;//设置缩放比例
scrollView.minimumZoomScale =0.5;
}
- (UIView *) viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return_imageView;//要缩放UIScrollView内的那个子控件
}
@end
-(void)scrollViewDidZoom:(UIScrollView*)scrollView;//正在缩放时调用
-(void)scrollViewDidEndZooming:(UIScrollView*)scrollView withView:(UIView *)view atScale:(float)scale;//结束时候调用
二、代理
1、使用场合
>A想让B帮忙做一些事情,就让B称为A的代理
>A想通知B发生了一些事情,或者告诉B一些事情,就让B称为A的代理
>B想监听A做的事情,就让B称为A的代理。所谓的做事就是做方法,告诉事情调用方法。
2、使用步骤
>定义一份协议
>让B准手这份协议,实现里面的方法
>A定义一个代理属性id <协议>
>设置B为A的代理
二、分页
1、分页功能也依赖于UIScrollView来实现。可以通过代码创建一个UIScrollView,如上。也可以通过拖控件来实现一个UIScrollView,这是的控件继有frame值,也归属于UIView,想拿到这个控件来用,继通过拖控件称为ViewController的属性即可,拖过来的控件是property属性的成员变量。
2、实现思路:添加8个UIImageView到UIScrollView。分别设置每个UIImageView的位置及大小,图片的大小为当前视图的大小。
@interface ViewController :UIViewController
@property (weak,nonatomic)IBOutletUIScrollView *scrollView;//拖控件生成的UIScrollView
@end
@interfaceViewController ()<UIScrollViewDelegate>
{
UIPageControl *_pageControl;//定义全局变量
}
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
for (int i =0; i<=8; i++) {//循环添加8张图片
UIImageView *imageView = [[UIImageViewalloc]init];
CGFloat w =self.view.frame.size.width;//设置UIImageView的宽高
CGFloat h =self.view.bounds.size.height;
imageView.frame =CGRectMake(i*w,0, w, h);//设置每个图片的位置
NSString *imageName = [NSStringstringWithFormat:@"0%d.jpg",i+1];
imageView.image = [UIImageimageNamed:imageName];
[_scrollViewaddSubview:imageView];//添加到控件中
_scrollView.contentSize =CGSizeMake(8*w,0);
_scrollView.pagingEnabled =YES;
_scrollView.delegate =self;//通过代理方法,正在滚动时调用的方法
UIPageControl *pageControl = [[UIPageControlalloc]init];//下面的滚动条
pageControl.center =CGPointMake(w*0.5, h-30);//设置终点属性
pageControl.bounds =CGRectMake(0,0,150,50);
pageControl.numberOfPages =8;//共有多少页
pageControl.currentPageIndicatorTintColor = [UIColorgrayColor];//当前页颜色
[self.viewaddSubview:pageControl];
_pageControl = pageControl;
}
}
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{//正在滚动时调用
CGFloat x =_scrollView.contentOffset.x;//UIScrollView的偏移量
int page = x/self.view.frame.size.width;
_pageControl.currentPage = page;
}
@end
三、键盘事件
@interfaceViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {//键盘事件一般只对文本框起作用
[superviewDidLoad];
//新建一个empty文件,加载这个xib文件里面拖一个UIToolBar的控件,文件名不需要后缀。
UIToolbar *bar = [[NSBundlemainBundle]loadNibNamed:@“text" owner:niloptions:nil][0];
_text.inputAccessoryView = bar;//加入文本框键盘上面的编辑栏
}
- (IBAction)click:(id)sender {
[_text resignFirstResponder];//退出第一响应者
[self.viewendEditing:YES];//子控件都会退出响应时间
}
@end