iOS-UIScrollView以及代理

一、UIScrollView
1.常见属性
@property(nonatomic) CGPoint contentOffset; // 记录UIScrollView滚动的位置
@property(nonatomic) CGSize contentSize; // 内容尺寸(能滚动的范围)
@property(nonatomic) UIEdgeInsets contentInset; // 额外增加的滚动区域(在上下左右4个边缘)
@property(nonatomic,assign) id<UIScrollViewDelegate> delegate; // 代理对象
@property(nonatomic) BOOL bounces; // 是否有弹簧效果
@property(nonatomic) BOOL showsHorizontalScrollIndicator; // 是否显示水平滚动条
@property(nonatomic) BOOL showsVerticalScrollIndicator; // 是否显示垂直滚动条
// tip : 重点掌握contentSize、contentOffset、delegate

2.捏合手势缩放
1> 缩放原理详解
* 当用户尝试缩放UIScrollView的时候,UIScrollView会尝试向它的delegate(代理对象)发送一条消息,询问要缩放哪一个子控件
* 换种说法,也就是说,UIScrollView会尝试调用delegate的某个方法 ,询问要缩放哪一个子控件,并且该方法的返回值就是需要缩放的子控件

2> 缩放原理总结
* UIScrollView先设置delegate对象
* UIScrollView必须知道delegate是通过哪个方法返回需要缩放的子控件,delegate必须实现那个返回需要缩放子控件的方法
* UIScrollView要跟delegate对象协商好:用哪一个方法返回需要缩放的子控件
* 那个返回需要缩放子控件的方法就是:
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;

3.缩放的一般实现步骤(比如缩放UIScrollView内部的UIImageView)
1> 设置UIScrollView的delegate为控制器(self)
2> 控制器遵守UIScrollViewDelegate协议  <UIScrollViewDelegate>
3> 控制器实现-(UIView *)viewForZoomingInScrollView:方法,返回需要缩放的子控件
4> 设置最大和最小缩放比例

二、代理设计模式
1.使用场合
1> A想让B帮忙做一些事情,就让B成为A的代理
2> A想通知一下B发生了某些事情,或者想传递一些数据给B,就让B成为A的代理
3> B想监听A所做的一些事情,就让B成为A的代理

2.使用步骤
1> 定义一份协议
2> B要遵守协议,实现相应的方法
3> A中要定义一个代理属性 id<协议> delegate;
4> 创建B对象,设置A的delegate属性为B对象

三、键盘处理
1.退出键盘的2种方法
1> 让文本框把键盘退回去(调用UITextField的resignFirstResponder方法)
[textField resignFirstResponder];

2> 一次性退出任何键盘
[self.view endEditing:YES];

2.自定义键盘
@property (readwrite, retain) UIView *inputView;

3.自定义键盘顶部显示的控件
@property (readwrite, retain) UIView *inputAccessoryView;

分页效果

1.设置pagingEnabled=YES即可,UIScrollView会被分割成多个独立页面,用户的滚动体验则变成了页面翻转
2.一般会配合UIPageControl增强分页效果,UIPageControl常用属性:
3.NSInteger numberOfPages : 总页数
4.NSInteger currentPage : 当前的页码
5.BOOL hidesForSinglePage : 当只有一页的时候,是否要隐藏视图
6.监听UIPageControl的页面改变:
// 添加监听器
[pageControl addTarget:self action:@selector(pageChange:)
      forControlEvents:UIControlEventValueChanged];
// 监听方法
- (void)pageChange:(UIPageControl *)pageControl
{  
}

 

转载于:https://www.cnblogs.com/DarbyCJ/p/3651161.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值