首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么UIView的边界是CGRect而不是CGSize?

这个问题涉及到了iOS开发中的UIView和CGRect、CGSize等概念。UIView是iOS开发中用于创建和管理用户界面元素的核心类,而CGRect和CGSize是用于描述矩形和大小的数据结构。

UIView的边界是CGRect而不是CGSize的原因是,CGRect包含了一个矩形的位置和大小信息,而CGSize只包含了大小信息。UIView的边界需要描述一个矩形的位置和大小,因此使用CGRect更加合适。

具体来说,UIView的边界是由一个CGRect数据结构来表示的,其中包含了UIView在父视图中的位置(origin)和大小(size)。origin表示UIView在父视图中的左上角坐标,而size表示UIView的宽度和高度。

使用CGRect来表示UIView的边界可以方便地处理视图的位置和大小信息,而使用CGSize则无法描述位置信息,因此在UIView中使用CGRect来表示边界是更加合理和高效的选择。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

微服务边界 (粒度) 决策, 不是个 标准答案

微服务边界 (粒度) "决策",不是个 "标准答案"。 许多人面对微服务时,往往都会纠结着一个问题:微服务太小?太大?...其实,会纠结在这个问题上,最根本原因便是误解了微服务粒度划分这件事本质;微服务划分本身 "架构设计"。也就是说微服务划分本身绝不是一个只讲"太大"或 "太小"标准答案 "是非题"。...而是需综合考量以下因素,所作出一个 "架构决策": 1. 市场业务扩展性 2. 与已有架构间冲突 3. 开发团队在开发上所可能面临风险 4....测试人员测试执行效率 所以,请不要再简单粗暴便脱口而出:你微服务划得太细、太小......而是应该将各微服务划分方式,深度思考,周全考量各方面的因素下,所作出一个 ”最适合” 架构决策,不是一个人芸亦芸 ”标准答案”。 ?

1.5K60

为什么 useState 返回 array 不是 object?

[count, setCount] = useState(0) 这里可以看到 useState 返回一个数组,那么为什么返回数组不是返回对象呢?...为什么返回数组不是返回对象 要弄懂这个问题要先明白 ES6 解构赋值,来看 2 个简单例子: 数组解构赋值 const foo = [1, 2, 3]; const [one, two, three...,这个问题就很好解释了 如果 useState 返回数组,那么使用者可以对数组中元素命名,代码看起来也比较干净 如果 useState 返回对象,在解构对象时候必须要和 useState 内部实现返回对象同名...总结 useState 返回 array 不是 object 原因就是为了降低使用复杂度,返回数组的话可以直接根据顺序解构,返回对象的话要想使用多次就得定义别名了 首发自:为什么 useState...返回 array 不是 object?

2.2K20
  • 为什么删除缓存,不是更新缓存?

    原因很简单,很多时候,在复杂点缓存场景,缓存不单单是数据库中直接取出来值。 比如可能更新了某个表一个字段,然后其对应缓存,需要查询另外两个表数据并进行运算,才能计算出缓存最新。...另外更新缓存代价有时候很高。是不是说,每次修改数据库时候,都一定要将其对应缓存更新一份?也许有的场景这样,但是对于比较复杂缓存数据计算场景,就不是这样了。...举个栗子,一个缓存涉及字段,在 1 分钟内就修改了 20 次,或者 100 次,那么缓存更新 20 次、100 次;但是这个缓存在 1 分钟内只被读取了 1 次,有大量冷数据。...其实删除缓存,不是更新缓存,就是一个 lazy 计算思想,不要每次都重新做复杂计算,不管它会不会用到,而是让它到需要被使用时候再重新计算。...如果删除缓存失败了,那么会导致数据库中新数据,缓存中旧数据,数据就出现了不一致。 解决思路:先删除缓存,再更新数据库。如果数据库更新失败了,那么数据库中旧数据,缓存中,那么数据不会不一致。

    15210

    为什么int main()不是void main()

    C/C++ 小误区:void main() 这是基于我们学校老师一直使用void main(),感慨,大一学习C语言时,我就在想,老师上课演示为什么一直用void main(),不是int main...C 在C89 中,main( ) 可以接受经典巨著(C程序设计语言第二版)用就是main( )不过在最新C99 标准中,只有以下两种定义方式正确: int main( void ) int...,我还是建议大家最好在main函数最后加上return语句,虽然没有这个必要,但这是一个好习惯注意,vc6不会在目标文件中加入return 0;,大概是因为vc698年产品,所以才不支持这个特性现在明白我为什么建议你最好加上...这当然也不是标准 C/C++ 里面定义东西!...char *envp[] 某些编译器提供扩展功能,用于获取系统环境变量因为不是标准,所以并非所有编译器都支持,故而移植性差,不推荐使用 ******************************

    3.6K70

    iOS学习——UIView研究

    在iOS开发中,我们知道有一个共同基类——NSObject,但是对于界面视图而言,UIView是非常重要一个类,UIView很多视图控件基类,因此,对于UIView学习闲非常有必要。...) 坐标空间协议UICoordinateSpace定义,定义了坐标点(CGPoint)、坐标区域(CGRect)在两个view间转换 UIView主要方法和属性定义 类方法 2个 初始化方法...) 视图快照相关扩展 UIView (UISnapshotting)  下面UIView.h文件源码分析,以下内容参考自:ios开发 之 UIView详解。...< 视图切换时直接隐藏旧视图、显示新视图,不是将旧视图从父视图移除(仅仅适用于转场动画). 70 UIViewAnimationOptionOverrideInheritedOptions...*/ 307 - (void)drawRect:(CGRect)rect; 308 309 /** 标记整个视图边界矩形需要重绘, 调用这个方法会自动调用drawRect方法 */ 310 - (void

    2.7K80

    iOS-圆角、边框、阴影

    3)shadowOffset 阴影方向和距离,默认(0, -3),即阴影相对于Y轴有3个点向上位移 4)shadowRadius 阴影模糊度,当它0时候,阴影就和视图一样有一个非常确定边界线...,当值越来越大时候,边界线看上去就会越来越模糊和自然 5)shadowPath 可以通过这个属性单独于图层形状之外指定阴影形状 阴影绘制在layer边界之外,所以当我们设置masksToBounds...在解决这个问题之前,我们还需要了解阴影另一个特性:阴影依据view内容外形确定不是根据边界和角半径来确定,下面放张图来解释一下 ?....h里面的内容 typedef UIView *(^ConrnerCorner) (UIRectCorner corner); typedef UIView *(^ConrnerBounds) (CGRect...viewbounds属性,为什么需要传这个值呢?

    2.7K50

    为什么 Docker 和 Kubernetes 用 Go 写不是 C# ?

    HahahahahaSoFunny 为什么 Docker 和 Kubernetes 工具用 Go 写不是 C#? 总所周知,现在开发人员使用很多新工具大多是用 Go 写。...为什么不是 C# 呢? .NET 和 C# 现在功能已经很强大了,是不是社区缺少这种文化?如何才能培养一种更加开源文化, 因为很多开发人员对 .NET 和 C# 仍然还抱有偏见。...haho5: 不确定为什么 Docker 用 Go 写, 但是 Kubernetes 确实是 Google 开发, 并且 Golang 也是。...像 C/C++ 这样稍微低级语言可以让您更接近硬件,对性能有要求时,这是最合适。 我可以用螺丝刀敲打钉子很多次,也可以用锤子花很大力气把螺丝打进去,都可以完成工作。...它从 2.0 到现在 10.0 变化非常快,相同代码逻辑可以用太多不同方式编写。 GO 一门简单语言,很受欢迎,因为好代码应该易于阅读和理解,以便成千上万开源程序员做出贡献。

    1.1K00

    重要图表思维,不是工具

    (主要是其中涉及到细节处理很麻烦) 当然过程花了些时间,主要是需要慢慢打磨其中细节,需要利用很多技术来处理图形版面的交接位置。...令我感触最深,想要用ggplot2随心所欲画图,ggplot2掌握再熟练,也只是勉强过了技术关,图表背后思维和结构更考验人,更具有挑战性。...以下数据构造模块2辅助数据: (上半部分堆积柱形图下侧连接带数据)辅助数据,我打算使用多边形几何对象了来模拟那些参差交错连接带。...这就意味着我要找到每一条带子,即四边形四个拐点坐标,并按顺序排列。) 如果你看不是很懂,实属正常,这种笨拙想法,我也不知道从哪里学来。...vie<-viewport(width=1,height=0.215,x=0.5,y=0.8) p1;print(p2,vp=vie) grid.text(label="全球茶叶消费排行榜\n喝茶最多<em>的</em><em>不是</em>中国人

    89960

    为什么AUC值不是GSEA来挑选转录因子呢

    见:基因集转录因子富集分析 通过学习,我们知道这个RcisTarget包内置motifAnnotations_hgnc16万行,可以看到每个基因有多个motif。...首先批量计算AUC值 如果单细胞转录组数据里面,每个单细胞都是有一个geneLists,那么就是成千上万个这样calcAUC分析,非常耗费计算资源和时间,就需要考虑并行处理,我们这里暂时不需要,所以直接...=1) motifs_AUC 可以看到 24453个motifsAUC值都被计算了: > motifs_AUC AUC for 1 gene-sets and 24453 motifs....值看起来满足正态分布,一般来说,对正态分布,我们会挑选 mean+2sd范围外认为统计学显著,但是作者卡比较严格, mean+3sd ,示意图如下: ?...然后看看motif详情 这个RcisTarget包内置motifAnnotations_hgnc16万行,可以看到每个基因有多个motif,我们挑选出来了105个moif,去这个表格里面筛选一下,

    1.2K20

    SPC控制图为什么±3σ,不是±2σ或±4σ?

    第二种:β风险:如果过程异常,但也会有部分点位于控制界限内,如果抽取到这样产品,就会被判断为正常,从而犯了第二类错误,即漏发警报。犯第二类错误概率记为β。如何减少两类错误所造成损失?...图片举例:举例来说,我们按照μ±3σ规则,如果发现数据点在μ±3σ之外,我们认为这个数据点异常,但我们这个判定是错误概率α,即0.27%,少于统计学中5%显著性水平。...一个解决方案:根据使两种错误造成总损失最小原则来确定UCL与LCL二者之间最优间隔距离。经验证明:休哈特所提出3σ方式较好,在不少情况下, 3σ方式都接近最优间隔距离。...因为常规控制图设计思想先确定犯第一类错误概率α,再确定犯第二类错误概率β。...这就是为什么常规控制图异常判定准则有两类,即:点超出控制限就判异和控制限内点排列不随机判异两类。

    46630

    Java里面Join(),为什么等待主线程,不是当前子线程?

    但是仔细一想,发现这个明明调用子线程join()方法,按道理应该子线程等待执行才是,为什么反而是主线程等待了呢?...源码中注释说明等待这个线程终止,那就是等待调用Join()线程终止,再继续往下看: /** * Waits at most {@code millis} milliseconds for...注意按照程序执行顺序,我们这里主线程调用ThreadJoin方法,所以是判断子线程存活状态,满足则让子线程执行,主线程来等待。...wait 等待方法让线程进入等待队列,使用方法 obj.wait(); 这样当前线程就会暂停运行,并且进入obj等待队列中,称作“线程正在obj上等待”。...可以把子线程t理解为一个普通obj对象,调用twait()方法,实际上就是主线程(main线程)在childThread对象队列上等待,可以转换为如下写法进一步理解: /** * 主线程 */

    81250

    为什么人工智能被认为机遇不是危险?

    人工智能腾空出世,让许多人心存疑惑,这究竟对人类来说,机遇,挑战,还是某种未知危险?成为了一个饱受争议问题。...随着当前智慧城市建设推进,人工智能技术会广泛应用于出行、医疗和日常消费领域,这对于普通人影响还是比较直接。另外,随着智能家居发展,未来更多家庭也将采用智能家居解决方案。...当第一次工业革命——蒸汽机出现时,人们担心蒸汽机会取代我们工作。现在,人工智能出现,人们还是会担心它所带来危机,当然,有后顾之忧正确。...但是,新技术不是让人失业,而是让人做更有价值事情,让人不去重复自己,而是去创新,让人工作能够进一步进化。...人工智能虽然在未来依旧有很大发展空间,但是远远达到不了威胁人脑地步,人类无须因人工智能恐慌。面对新技术威胁,与其担心、不如担当。与其担心技术夺走就业,不如拥抱技术,去解决新问题。

    42310

    需要学习编程,不是编程语言

    原翻译传送门is here 你可能在学习编程语言不是编程本身 别对学习计算机科学(CS)不是研究计算机这种言论感到惊讶。相反,学习CS对自动解决问题研究。...解决问题计算机科学,不是编程。这就是为什么许多CS学生似乎不明白自己为什么要学习算法和数学。 如果之前你有去上过CS课程,你就不会对我这里说的话感到惊讶。...我花了十几年时间学习各种编程语言。我学越多,发现建立简单东西就越难。我总有那么种感觉我没找到合适工具。但是,问题出在当我还没有意识到我要做工作时,忘了寻找适合工作不是寻找适合工具。...学习编程语言问题就好比在学习木工之前去学习如何使用木工锯,锤子和各种切割机器。木工需要注意:想法、可行性分析、测量、测试和用户行为。老木工对上面提到注意点更感兴趣,不是锤子和钉子。...通过上面的途径,你会学到些推理方法,但是过不了多久,你会意识到自己浪费了或者花了很长时间去学习编程。 我们通过编程解决问题,编程语言只是协助我们工具。

    45830

    系统首先维护本质不是现象

    类似的还有,左拐弯,右拐弯,还是大拐弯,小拐弯 Alan 2022-9-7 9:46 在发糕系统里,一个A系统所有系统实例 消息.责任 数量总和, 是不是与 A系统责任 数量 相等呢?...UMLChina潘加宇 这个“所有实例”数量可是无穷大了。 应该说,去掉重复元组之后,得到结果责任集合子集。 ****** 这个问题问实际上就是: 序列图上消息是否覆盖了类所有操作?...虽然从各种“流水大数据”(条件维护数据全面的,像上面说“有可能场景都列出来”)来推算本质模型系可能,但这个推算逻辑也不是从天上掉下来,也是先要理清楚本质模型是什么,以及各种流水和本质模型关系...一旦找到其中规律,就没有必要从之前做试验得到已有巨量数据来推测新数据了,我们只需记住探索出来物理公式即可。 更何况,不是所有的系统都会保存“流水”。...****** 现在那些鼓吹“事件溯源”,以为逻辑从天上掉下来呢? 但凡认真学过关系代数而且成绩过关,就会对这些东西留个心眼,但现在很多开发人员,连这些基本要求都达不到。

    31120

    iOS OC swift 自定义 popover 泡泡

    popover.gif 灰色区域 底层视图 棕色 popover 泡泡不能超出区域,popover 不能超出屏幕或者离屏幕太近,否则效果不好。...棕色区域可以设置 红色 底层箭头视图边框 白色 底层箭头视图背景颜色 蓝色 自定义内容区域,在此区域(contentView)可以添加希望展示内容 加号按钮 模拟了 sourceView...防止内容覆盖圆角 targetSize: CGSize /// 需要展示内容大小,此字段一定需要重新设置 /// 并且宽高大小加上 minScreenEdg contentInset 不能大于屏幕宽高...上 /// - sourceView: 视图来源,箭头指向视图 func dismiss() 消失 func getBestDirection(sourceRect: CGRect, size:...(sourceRect: CGRect, size: CGSize, direction: UIPopoverArrowDirection) -> Bool /// sourceRect: sourceView

    2.7K70
    领券