• bounds的深入研究


    一.bounds的深入研究

      1>frame:是以父控件的左上角为原点,描述的是一块区域的可视范围,

          bounds:是以自己内容左上角为原点,描述的是可视范围在内容范围显示的区域

      2>frame:参照父控件一直不变

        bounds:参照内容,位置会变动

      注意:当bounds的y值增加,内容会往上移动!为什么呢?因为y值增加,表示要显示下面的内容,所以内容往上移动了.

      3>UIScrollView底层实现:

        (1)先创建一个UIView,把它添加到控制器的view上

        (2)再在这个UIView上添加一个拖拽手势

        (3)拖动的时候调用一个方法,用来改变bounds的偏移量

    #import "ViewController.h"
    
    @interface ViewController ()<UIScrollViewDelegate>
    @property (weak, nonatomic) UIView *scrollView @property (nonatomic, assign) CGPoint offsetX;
    @end @implementation ViewController
    - (void)viewDidLoad { [super viewDidLoad]; UIView *scrollView = [[UIView alloc] initWithFrame:self.view.bounds]; [self.view addSubview:scrollView]; _scrollView = scrollView; UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)]; [scrollView addGestureRecognizer:pan]; UISwitch *switchV = [[UISwitch alloc] init]; [scrollView addSubview:switchV]; } // 拖动的时候调用 - (void)pan:(UIPanGestureRecognizer *)pan { // 获取偏移量 CGPoint transP = [pan translationInView:pan.view]; _offsetX.x += -transP.x; _offsetX.y += -transP.y; _scrollView.bounds = CGRectMake(_offsetX.x, _offsetX.y, self.view.bounds.size.width, self.view.bounds.size.height); [pan setTranslation:CGPointZero inView:pan.view]; }
  • 相关阅读:
    解决duplicate symbols for architecture x86_64错误
    IOS-UITextField键盘不隐藏问题
    IOS-细节错误
    IOS开发-图片上传
    IOS-指定返回Modal的控制器presentViewController
    支付-支付宝集成
    真机测试-Please enter a different string错误解决
    Xcode插件安装 错选了Skip Bundle解决办法
    SQLServer 命令批量删除数据库中指定表(游标循环删除)
    SQL中使用update inner join和delete inner join
  • 原文地址:https://www.cnblogs.com/naiwenmoer/p/5538235.html
Copyright © 2020-2023  润新知