UI—UIScrollView缩放控件、代理、分页、键盘

一、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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值