IOS开发之深入坐标系frame、bounds、center、 transform的不同与联系

有疑问的请加qq交流群:390438081

我的QQ:604886384(注明来意)

微信:niuting823

1.1 frame属性

a。什么是frame

类型:CGRect结构体(size  origin)

作用:该视图左顶点在父视图的坐标系下的位置,以及该视图在父视图中占据的宽和高

b。直接修改了frame,其他属性如何变化?

bounds:     会

center:       会

transform:  不会

c。什么时候使用frame

当把一个视图添加到父视图中时,一定要设定frame属性

1.2 bounds属性

a。什么是bounds属性

类型:CGRect结构体

作用:描述的是该视图自己坐标系顶点的基准值,以及该视图自身的大小

b。直接修改bounds属性时,其他属性如何变化

frame:会

center:不会

transform:不会

c。什么时候 bounds属性

当需要定义视图时,要读取父视图的大小时,那么就是用父视图的bounds属性中的size

当修改视图内的子视图的位置时,可以修改视图的bounds的坐标系起点,从而让子视图的位置发生偏移,实现移动的效果

1.3 center属性

a。什么是center属性

类型:CGPoint类型

作用:描述了该视图中心点在父视图坐标系下的位置

b。直接修改center属性,其他属性的变化

frame:与坐标有关的值 会变

bounds:不会

transform:不会

c。什么时候用center

需要修改视图的位置,也就是位移时,通过修改center

1.4 transform属性

a。什么是transform属性

类型:CGAffineTransform

作用:描述该视图的变形状态

b。直接修改transform,其他属性如何变化

frame:会

bounds:不会

center:不会

c。什么时候用transform

视图需要变形(缩放、旋转)时,可以修改该属性

结论:变形前 frame和bounds保持变化的一致性,变形后,frame代表的时在视图中表现出来的外观,所以会随着变形而记录不同的外观状态,所以会改变,但bounds不是用来记录表现的,只是记录大小,所以不会改变,bounds和center都是独立于变形坐标系外的数值,transform记录的就是变形对绘制坐标系的更改

想得到大小,读bounds,想确定位置,找frame

时间: 2024-11-14 18:08:04

IOS开发之深入坐标系frame、bounds、center、 transform的不同与联系的相关文章

IOS开发之控件frame/bounds/center尺寸改变小技巧-简单给UIView新增分类(github链接)

大家是否还记得对控件的frame/bounds/center进行属性更改时的三部曲? 1>将结构体取出 2>改变取出后的结构体对应的数据 3>将修改后的结构体赋值给控件 CGRect frame = self.view.frame; // your code... frame.origin.x = frameX; // your code... self.view.frame = frame; 这在实际工作中需要更改相应属性的时候是很不方便的,所以考虑到直接在UIView的分类中添加相应

iOS编程(双语版)-视图-Frame/Bounds/Center

1. Frame 每个视图都有一个frame属性,它是CGRect结构,它描述了视图所在的矩形在其父视图中的位置. (屏幕坐标系默认的原点在左上角,x轴向右伸展,y轴向下伸展) 设置frame通常通过视图的指定初始化器initWithFrame 下面来看个例子,该例子初始化了3个相互叠加的矩形区域 (Objective-C代码) UIView* v1 = [[UIView alloc] initWithFrame:CGRectMake(113, 111, 132, 194)]; v1.backg

初见IOS的UI之:UI控件的属性frame bounds center 和transform

这些属性,内部都是结构体:CGRect CGPoint CGFloat 背景知识:所有的控件都是view的子类,屏幕就是一个大的view:每个view都有个viewController,它是view的管家,每个view对应着一个viewController,来管理view. frame & bounds & center ======================================== 1> frame可以修改对象的位置和尺寸 2> bounds可以修改对象的尺

iOS开发——使用OC篇&frame,bounds,center,position,anchorPoint总结

frame,bounds,center,position,anchorPoint总结 图层的 position 属性是一个 CGPoint 的值,它指定图层相当于它父图层的位置, 该值基于父图层的坐标系. 图层的 bounds 属性是一个 CGRect 的值,指定图层的大小(bounds.size)和图层的 原点(bounds.origin).当你重写图层的重画方法的时候,bounds 的原点可以作为图形 上下文的原点. 图层拥有一个隐式的 frame,它是 position,bounds,an

iOS开发总结(A0)- Game Center

Game Center 的内容很多,这里主要总结Authentication,match,LeaderBoard 1. 关于ui, game center 提供了很多标准ui ,如matchmakervc,friendrequestvc,gamecentervc, leaderboardvc简单易用. 我认为对于matchmaker用标准ui即可(若自定义,比较复杂),leaderboardvc可自己创建以符合app ui风格 2. Authentication 越早越好 如果可能的话,再did

iOS开发笔记-根据frame大小动态调整fontSize的自适应文本及圆形进度条控件的实现

最近同样是新App,设计稿里出现一种圆形进度条的设计,如下: 想了想,圆形进度条实现起来不难,但是其中显示百分比的文本确需要自适应,虽然可以使用时自己设定文本字体的大小,但是这样显得很麻烦,也很low. 查了一圈,目前实现的自适应UILabel,都是根据font大小动态调整frame的size,并不能满足我们的需求.  那么问题来了 如何实现一种能够根据frame大小自适应调整文本font size的圆形进度条呢? 我的实现思路很简单,首先计算出能够给予UILabel的frame最大尺寸,然后根

iOS开发进阶

博客专栏>移动开发专栏>IOS开发进阶 分享到:新浪微博腾讯微博IOS开发进阶 iPhone开发进阶,如果你已经基本熟悉了Objective-c基本语法,你已经熟悉iOS程序开发的基础,那么我们再进一步的学习iOS开发的知识.比如多任务编程,网络,系统方面的原理,内存管理,debug或查找crash的技巧等. 收藏 订阅 最新更新文章 [移动开发] iOS界面-仿网易新闻左侧抽屉式交互 续(添加新闻内容页和评论页手势) 1.介绍有的博友看了上篇博文 iOS界面-仿网易新闻左侧抽屉式交互 ,在微

IOS开发基础知识--碎片25

1:使用@protocol实现delegate和datasource模式 #import <UIKit/UIKit.h> @protocol MyViewDataSource,MyViewDelegate; @interface myView : UIView<UIAlertViewDelegate> @property(nonatomic,assign)id<MyViewDelegate> myViewDelegate; @property(nonatomic,ass

iOS开发UI—Button基础

iOS开发UI篇—Button基础 一.简单说明 一般情况下,点击某个控件后,会做出相应反应的都是按钮 按钮的功能比较多,既能显示文字,又能显示图片,还能随时调整内部图片和文字的位置 二.按钮的三种状态 normal(普通状态) 默认情况(Default) 对应的枚举常量:UIControlStateNormal highlighted(高亮状态) 按钮被按下去的时候(手指还未松开) 对应的枚举常量:UIControlStateHighlighted disabled(失效状态,不可用状态) 如