美文网首页iOS开发
面试题一(自定义UIScrollView)

面试题一(自定义UIScrollView)

作者: 追逐_chase | 来源:发表于2017-09-22 14:18 被阅读8次

    assign和weak的区别

    weak

    • 解释weak
      weak:弱指针,不会让引用计数+1,如果指向的对象被销毁,指针会自动清空

    • 使用场景
      在ARC的情况下 一般都是使用weak

    assgin

    • 解释weak
      assgin:不会让引用计数器+1,如果指向的对象被销毁,指针不会自动清空
      用 __unsafe_unretained:不安全
    • 使用场景
      在MRC的情况下 一般都是使用assgin 非对象

    bounds和frame的区别

    共同点是描述一块区域的

    bounds

    • 解释bounds
      bounds:描述的是可视范围在内容的区域
      修改bounds的本质是修改内容的原点

    frame

    • 解释frame
      frame:描述的是可视范围

    利用bounds属性自己写一个UIScrolloView

    #import "ViewController.h"
    
    @interface ViewController ()<UIScrollViewDelegate>
    
    /**自定义ScrolloView*/
    @property (nonatomic, weak) UIView *coustonScrolloView;
    
    @end
    
    //1.定义一个customScrolloView
       UIView * customScrolloView = [[UIView alloc] initWithFrame:self.view.bounds];
      coustonScrolloView.backgroundColor = [UIColor redColor];
       self.coustonScrolloView = coustonScrolloView;
       [self.view addSubview: customScrolloView];
    //2.添加一个平移手势
    
     UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self  action:@selector(pan:)];
        [coustonScrolloView addGestureRecognizer:pan];
     //3.在自定义的  customScrolloView上添加一个 子控件
        UISwitch *switchF = [[UISwitch alloc] init];
        
        [customScrolloView addSubview:switchF];
    
    
    //实现平移方法
    - (void)pan:(UIPanGestureRecognizer *)pan {
        
        
        CGPoint tarnP = [pan translationInView:pan.view];
        
        CGRect bounce = self.coustonScrolloView.bounds;
        bounce.origin.y -= tarnP.y;
        self.coustonScrolloView.bounds = bounce;
        
        NSLog(@"%@",NSStringFromCGRect(self.coustonScrolloView.bounds));
    
        //复位  始终保持在上一次平移的基础上的操作
        [pan setTranslation:CGPointZero inView:pan.view];
        
    }
    
    

    效果图:

    自定义ScrolloView.gif

    相关文章

      网友评论

        本文标题:面试题一(自定义UIScrollView)

        本文链接:https://www.haomeiwen.com/subject/xdftextx.html