UIbutton的坑以及frame和bounds的区别

本文探讨了iOS开发中UIButton的一些常见问题,包括图片与文字的默认排布以及如何实现它们的重叠。同时,详细阐述了frame和bounds的区别,指出frame表示视图在父控件坐标系的位置和大小,而bounds则描述视图自身的坐标和大小,即使视图旋转,bounds的宽高依然保持不变。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

UIButton坑:

1)设置图片+文字默认不会重叠,而是把这两个子view排开放,所以如果button的大小不够容纳两个view,就会只显示一部分。

如果想强行设置重叠,需要设置EdgeInset

[button setImageEdgeInsets:UIEdgeInsetsMake(0, 0, 0, -button.titleLabel.intrinsicContentSize.width)];

[button setTitleEdgeInsets:UIEdgeInsetsMake(0, -button.currentImage.size.width, 0, 0)];

2)设置图片或者文字不能直接调用setter,需要调用setTitle或者setImage,因为是深拷贝

3)frame,bounds区别:

frame的(父控件坐标系):(x,y)=(这个视图距离父控件的左边的距离,这个视图距离父控件的右边的距离)

理解为frame就是“画框”的坐标和大小,画如果有变形或旋转,画框只需要能保证容纳这幅画就可以,不需要改变方向


bounds(自身坐标系):的(x,y)=(frame的x-view的真实x,frame的y-view的真实y

理解为bounds就是“画”的坐标和大小,而画的大小(bounds的大小)不一定与画框一样大,位置(bounds的xy)也可以不是画框的左上角,如果画旋转方向,bounds的宽和高情况和frame一样


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值