iOS笔记4

//————————–UIScrollView————————

  1. UIScrollView常见属性
    // 设置只能在一个方向上滚动
    self.scrollView.directionalLockEnabled = YES;
    // 内容在scrollView四周的弹簧效果
    self.scrollView.bounces = NO;
    // 实现下拉刷新
    // 不管有没有contentSize 都可以水平 垂直方向的拉
    self.scrollView.alwaysBounceVertical = YES;
    self.scrollView.alwaysBounceHorizontal = YES;
    // 分页效果
    self.scrollView.pagingEnabled = YES;
    // UIButton *btn ;
    // btn.enabled = NO;
    // btn.userInteractionEnabled = NO;
    // 设置scrollView能不能滚动
    self.scrollView.scrollEnabled = NO;
    // 任何继承自UIView的子类都能使用以下属性设置与用户是否能交互
    self.scrollView.userInteractionEnabled = NO;
    // 滚动条在scrollView的subview中
    NSLog(@”——subviews = %@”,self.scrollView.subviews);
    // 设置水平方向的滚动条
    self.scrollView.showsHorizontalScrollIndicator = NO;
    self.scrollView.showsVerticalScrollIndicator = NO;
    // subviews中没有滚动条
    NSLog(@”—-2–subviews = %@”,self.scrollView.subviews);
    // 滚动条的样式
    self.scrollView.indicatorStyle = UIScrollViewIndicatorStyleBlack;
    // 惯性停下来的速度 靠自己的手验证
    self.scrollView.decelerationRate = 0.1f;

  2. UIScrollView重点常见属性(contentOffset/contentSize/contentInset)
    // 设置内容尺寸
    self.scrollView.contentSize = imageView.image.size;
    // 设置内容的偏移量
    self.scrollView.contentOffset = CGPointMake(200, 200);
    // 内边距
    self.scrollView.contentInset = UIEdgeInsetsMake(20, 30, 40, 50);

3.delegate 代理(assign 弱引用)
1. 遵守协议
2. 成为代理
3. 实现代理方法

一般:
    1. 代理的名称一般是控件的名称 + Delegate
        UITextFieldDelegate,UITableViewDelegate,UIScrollViewDelegate,UIAlertViewDelegate
    2. 代理需要实现的的方法一般都是代理名称 - UI - delegate
        - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;
        - (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath;
        - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex;
    3. 成为代理
        一般需要在A类中写代理方法,那么就让A类成为代理
            遵守协议 - 写在.h文件中 (如果是需要当前控制器,那么就.m中遵守协议就可以了)
            实现(你需要和必须实现的)代理方法
            成为代理  scrollView.delegate(scrollView 的属性) = self
  1. scrollView的代理方法
    // scrollView 正在滚动的时候调用 偏移量一直变化
    - (void)scrollViewDidScroll:(UIScrollView *)scrollView;
    // scrollView正在缩放
    - (void)scrollViewDidZoom:(UIScrollView *)scrollView
    // 开始拖拽的时候调用
    - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;
    // 即将停止拖拽的时候调用
    - (void)scrollViewWillEndDragging:(UIScrollView )scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint )targetContentOffset NS_AVAILABLE_IOS(5_0);
    // 已经停止拖拽调用
    - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
    // scrollView即将开始减速
    - (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView;
    // scrollView 停止减速 停止
    - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;
    // scrollView 停止滚的的动画
    - (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView;
    // 在scrollView中 哪些控件是需要缩放的
    - (UIView )viewForZoomingInScrollView:(UIScrollView )scrollView;
    // scrollView即将开始缩放
    - (void)scrollViewWillBeginZooming:(UIScrollView )scrollView withView:(UIView )view NS_AVAILABLE_IOS(3_2);
    // scrollView结束缩放
    - (void)scrollViewDidEndZooming:(UIScrollView )scrollView withView:(UIView )view atScale:(CGFloat)scale;
    // scrollView 即将滚动到顶部
    - (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView;
    // scrollView 已经滚动到顶部
    - (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView;

5.图片的缩放
1. 遵守协议
2. 成为代理
3. 实现代理方法
4. 在- (UIView )viewForZoomingInScrollView:(UIScrollView )scrollView 返回一个需要缩放的控件
5. 设置scrollView的最大和最小缩放比例
6. 用到的代理方法
以下方法中 view 就是正在缩放的控件
scale 缩放比例
- (void)scrollViewWillBeginZooming:(UIScrollView )scrollView withView:(UIView )view
- (void)scrollViewWillBeginZooming:(UIScrollView )scrollView withView:(UIView )view

6.UITextField 的代理方法、常见设置
1. 常见设置
// 数字键盘
textField.keyboardType = UIKeyboardTypeNumberPad;
// 改变键盘的右下角return 按钮的名称
textField.returnKeyType = UIReturnKeyDone;

2. 代理方法
    // textField : A输入框发送改变 就把A输入框传入代理方法中
    // range : 其实就是光标的位置  长度就是代表需要替换哪些字符串
    // string : 输入的是什么就是什么
    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
  1. 图片轮播器(涉及将定时器NSTimer 添加到 主线程中)

    1. 往scrollView 中添加imageView (5个),imageView的尺寸保持根scrollView的尺寸一致
    2. 设置分页 pagingEnabled = YES
    3. pageControl 在storyboard中 根 scrollView 同级
    4. 设置pageControl的一些属性 numberOfPages currentPage…
    5. 在scrollViewDidScroll代理方法中设置currentPage
      使用x偏移量 / scrollView的宽度 + 0.5 “记得打印偏移量”
    6. nextPage
      1. 获取pageControl的当前页 + 1 (跳到下一个) = index
      2. 判断index 是不是为 5 (如果是 index = 0)(循环切换)
      3. 设置偏移量(使用偏移量切换到下一个imageView)
        index *width(scrollView)
    7. 定时器

      1. performSector
      2. NSTimer
        self.timer = [NSTimer scheduledTimerWithTimeInterval:2.0f target:self selector:@selector(nextPage:) userInfo:@”ceshi” repeats:YES];
        timer是一次性 , 用了就不能再用了
      3. 添加timer到主线程
        [[NSRunLoop mainRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];

      pragma mark - 定时器相关

      • (void)startTimer
        {
        // 返回一个自动开始执行任务的定时器
        self.timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(nextPage:) userInfo:@”123” repeats:YES];

        // 修改NSTimer在NSRunLoop中的模式:NSRunLoopCommonModes
        // 主线程不管在处理什么操作,都会抽时间处理NSTimer
        [[NSRunLoop mainRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
        }

      • (void)stopTimer
        {
        [self.timer invalidate];
        }

  2. 封装图片轮播器

    1. 类方法加载xib
    2. 先把 awakeFromNib
      1. pageControl的一次性操作
    3. 重写图片数组set方法
      将控制器中viewDidLoad里面所有的代码除了 pageControl的一次性操作
    4. copy控制器中所有的方法
    5. 将报错的地方补上
  3. 使用scrollView做购物车

    1. 设置contentSize
      拿出scrollView中的最后一个控件
      算出这个空间的bottom = (控件的高 + 控件的y)
      bottom 就是contentSize 的height
    2. 设置contentOffset
      首先判断最后一个控件的bottom 是不是比 scrollView的高度大
      如果大 设置偏移量height 就 = bottom

10
//layoutIfNeeded setNeedsDisplay
[self.view layoutIfNeeded]; //强制布局
[self setNeedsDisplay]; //重绘(刷帧)

11
//系统自带的button样式有自己的宽和高

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值