frame 和 bounds的区别

简介: frame 和 bounds的区别

frame 和 bounds的区别


很多iOS程序员在面试时候都会被问到frame和bounds的区别

很多人都这么回答frame就是相对父控件左上角的位置和大小
bounds就是相对自身左上角的位置大小,其实相对位置就是零

其实这种回答不是很准确,只能说是百分之五十对。为什么呢,如果面试官再追问:那这么说bounds的X ,Y  就永远都是零 ?  这时候你如果说是,那就错了,如果你说不是,那么就和你刚才的回答有点对不上,所以,其实不是这样,bounds的X、 Y的值是可以改变的。改变的其实是控件的内容的位置,所以控件本身的位置是不会变的,但是该控件的子控件位置就会发生改变。

其实正确的回答应该是这样的

- frame
    - 以`父控件` `内容`的左上角为坐标原点, 计算出的`控件自己` `矩形框`的位置和尺寸
- bounds
    - 以`控件自己` `内容`的左上角为坐标原点, 计算出的`控件自己` `矩形框`的位置和尺寸
- 概括
    - frame.size == bounds.size
    - scrollView.bounds.origin == scrollView.contentOffset

为了方便理解,我给大家来一张图就很容易理解了

9b91acf490bad0ea2d034985ac42aefe.png

bounds和frame的区别.png

为什么我们要这样说呢,很简单的一个道理,UIScrollView有个contentSize这个属性,其实是相对UIScrollView的“内容”的位置

相关文章
|
1月前
|
10月前
|
算法
frame_size (1536) was not respected for a non-last frame
frame_size (1536) was not respected for a non-last frame
72 0
frame_size (1536) was not respected for a non-last frame
|
10月前
|
存储 API
sws_scale():bad dst image pointers
sws_scale():bad dst image pointers
161 0
sws_scale():bad dst image pointers
UITextView根据NSString计算Size
UITextView根据NSString计算Size
48 0
|
iOS开发
深入浅出了解frame和bounds
对bounds和frame的理解
1506 0
关于avpicture_fill 和 sws_scale的关系
avpicture_fill((AVPicture *) pFrameRGB, buffer, PIX_FMT_RGB565, pCodecCtx->width, pCodecCtx->height); 复制代码 这句调用时,pFrameRGB和buffer都是已经申请到的一段内存, 会将pFrameRGB的数据按RGB565格式自动"关联"到buffer。
1745 0