版权声明:本文为延成原创文章,转载请标明出处

  • frame:以父控件左上角为原点

  • bounds:以自己的左上角为原点,bounds x,y永远为0是错误的

  • frame和bounds都是用来描述一块区域

  • frame:描述可视范围

  • bounds:描述可视范围在内容的区域
    所有的子控件都是相对于内容
    bounds:修改内容原点

  • 相对性:可视范围相对于父控件位置永远不变
    可视范围相对于内容,位置改变

获取控件在屏幕的相对坐标实现代码

UIWindow * window=[[[UIApplication sharedApplication] delegate] window];//获取控件view的相对坐标
CGRect rect=[view convertRect: view.bounds toView:window]; 

简单模仿系统UIScrollView的实现

#import "ViewController.h"@interface ViewController ()<UIScrollViewDelegate>@property (nonatomic, weak) UIView *scrollView;
@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];// 模仿系统控件 => 怎么去使用 => 滚动scrollView,其实本质滚动内容 => 改bounds => 验证// => 手指往上拖动,bounds y++ ,内容才会往上走UIView *scrollView = [[UIView alloc] initWithFrame:self.view.bounds];[self.view addSubview:scrollView];_scrollView = scrollView;// 添加Pan手势UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)];[scrollView addGestureRecognizer:pan];UISwitch *switchView = [[UISwitch alloc] init];[scrollView addSubview:switchView];
}- (void)pan:(UIPanGestureRecognizer *)pan
{// 获取手指的偏移量CGPoint transP = [pan translationInView:pan.view];// 修改boundsCGRect bounds = _scrollView.bounds;bounds.origin.y -= transP.y;_scrollView.bounds = bounds;// 复位[pan setTranslation:CGPointZero inView:pan.view];}#pragma mark - UIScrollViewDelegate
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{NSLog(@"%@",NSStringFromCGRect(scrollView.bounds));NSLog(@"%@",NSStringFromCGPoint(scrollView.contentOffset));
}@end

Bounds和Frame简介相关推荐

  1. I-P-B frame简介

    I-P-B frame简介 2007-11-01 09:58:44 分享: 三种帧类型 IF--I-frame的缩写,即关键帧.关键帧是构成一个帧组(GOP,Group of Picture)的第一个 ...

  2. ios bounds和frame的区别(bounds的应用)

    苹果官方文档定义连接: bounds-UIView | Apple Developer Documentation 返回上级目录:IOS文档学习 文章目录 1.定义和比较 2.通过改变bounds的x ...

  3. iOS——frame bounds

    前言 在iOS中我们经常会对控件位置调整,利用到了bounds和frame,但是一直没搞懂他俩的区别,今天记录一下. frame和bounds简介 frame: 该view在父view坐标系统中的位置 ...

  4. iOS bug 日志 -frame 和 bounds的区别

    使用显式动画,如果设置layer 的bounds和frame效果是不一样的 如果设置 self.layer.bounds = CGRectMake(0, 0, width, width); 效果如图 ...

  5. iOS开发UI篇—手写控件,frame,center和bounds属性

    一.手写控件 1.手写控件的步骤 (1)使用相应的控件类创建控件对象 (2)设置该控件的各种属性 (3)添加控件到视图中 (4)如果是button等控件,还需考虑控件的单击事件等 (5)注意:View ...

  6. iOS开发UI基础—手写控件,frame,center和bounds属性

    iOS开发UI基础-手写控件,frame,center和bounds属性 一.手写控件 1.手写控件的步骤 (1)使用相应的控件类创建控件对象 (2)设置该控件的各种属性 (3)添加控件到视图中 (4 ...

  7. frame、bounds表示大小和位置的属性以及center、position、anchorPosition

    在iOS开发开发过程中经常会用到界面元素的frame.bounds表示大小和位置的属性以及center.position.anchorPosition等单纯表示位置的属性.这些属性究竟什么含义?彼此间 ...

  8. iOS开发——frame和bounds详解

    在iOS的UI开发中,frame和bounds是两个非常容易搞混的概念,而很多开发者在实际项目中也很少去区分,因此会导致出现一些意想不到的问题.本篇博客以实际代码的方式来学习frame和bounds的 ...

  9. frame 和 bounds的区别

    这篇是见过写的最为详细易懂的文章: frame与bounds的区别详解 - 简书 简单概括下: 1.bounds和frame都是属于CGRect类型的结构体,系统的定义如下,包含一个CGPoint(起 ...

  10. [iOS开发]frame和bounds

    简述 Frame: 视图的位置和大小使用是父视图的坐标系,所以将视图放置在父级中这一点就很重要. Bounds:视图的位置和大小,使用的是其自己的坐标系,而对于这一点而言将视图的内容或子视图放置在其自 ...

最新文章

  1. CUDA C++编程手册(总论)
  2. 完美解决“惠普p1007打印机老显示脱机使用”的问题
  3. [云炬python学习笔记]Numpy中内置函数min(),max(),sum()与Python中内置函数min(),max(),sum()性能对比分析
  4. 二值神经网络(Binary Neural Networks)最新综述
  5. 苹果将推出新款iPhone 7/8?为应对德国禁售令!
  6. Grasshopper不显示gha插件的解决方法
  7. 旅游管理系统(包含旅游最短路径规划算法等,包含系统分析的各种uml图和界面图)
  8. 树莓派 opencv 调用摄像头
  9. 购买大米云主机并配置php环境搭建企业网站
  10. SPSS Modeler 入门(一)
  11. 2019年8月 华为鸿蒙,华为2019年开发者大会将于8月9日举行,期待鸿蒙吗?
  12. 英特尔居然也来搞GTA5美化MOD了……?
  13. [附源码]计算机毕业设计JAVAst音乐网站
  14. dying relu 和weight decay
  15. 【CSS3】浅谈display属性flex弹性布局、gird网格布局
  16. sqlserver 登录方式修改,由默认的windows账户改为用sa等sql server账户登录问题
  17. 剥opgw光缆工具_ADSS光缆开剥光缆常用方法及开剥注意点
  18. 财务分析之利润表、现金流量表
  19. 在线分析仪器(二)术语和技术指标
  20. visual svn for visual studio 2019

热门文章

  1. Flex Builder中网络监视器导致“访问URL时遇到安全性错误”
  2. 在MonthCalendar控件中选中日期
  3. 计算机网络怎样连手机软件,手机怎么共享网络给电脑_手机如何共享电脑网络-win7之家...
  4. EXCEL用今天日期减去之前的日期得到结果
  5. 什么是Google AMP
  6. matlab 模拟水滴,Keyshot tips :使用 Keyshot 程序贴图模拟水滴效果
  7. 解决mangos60级后生命值为什么不变
  8. sns.heatmap用法
  9. vue-element-admin 后台管理系统
  10. [Xcelsius]BI展现工具之Xcelsius