关于 frame和Bounds的区别

  • 假设一个scrollView的宽高是50,60,挨着屏幕左上角,那么正常情况下如果它的bounds是(0,0,50,60),frame是(0,0,50,60)。如果它的contentOffset改为100,100(就是内容往左上移动了100,100),那么此时scrollView的bounds就是(100,100,50,60),frame还是(0,0,50,60)。控件B此时成为它的子控件,它的frame要去找scrollView的坐标系的原点为参照,而此时scrollView的左上角已经变为(100,100),那么B要贴着scrollView的左上角,也要把frame设置为(100,100)。
  • 换一种思路:scrollView的坐标系原点是内容左上角,现在内容往左移了。而B的frame参照原点就是scrollView的坐标系原点,所以应该是(100,100)
  • 综上:要让子控件贴合父控件,那么直接设置子控件的frame = 父控件的bounds就对了。而如果是要子控件与父控件的左上角对齐,那么只要子控件的frame的前两位坐标等于父控件的bounds的前两位坐标。
  • 结合图片会更容易理解


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值