Swift(UIKit)中如何获取UIButton的Frame起始X坐标?
要让蓝色下划线对齐UIButton红色背景的左边缘,关键是获取按钮相对于屏幕坐标系的起始X坐标,以下是可靠的实现方式:
- 使用
convert(_:to:)方法转换坐标系
这个方法可以自动处理嵌套视图(比如Tab View容器)的层级偏移,直接将按钮自身的原点转换到窗口(屏幕)坐标系:if let window = UIApplication.shared.windows.first { let screenOrigin = promoButton.convert(CGPoint.zero, to: window) let buttonScreenX = screenOrigin.x // 用buttonScreenX设置下划线的起始位置即可 }
你之前遇到的问题原因:
promoButton.frame.origin.x是按钮相对于直接父视图的X坐标,所以在父视图里按钮左对齐时会返回0bounds.origin.x是按钮自身内部坐标系的原点,本身就固定为0layer.position.x是按钮中心点相对于父视图的X坐标,自然会对应文字区域的位置
用转换后的screenOrigin.x作为下划线起始点,就能完美对齐按钮的红色背景左边缘。
内容的提问来源于stack exchange,提问作者Aldo Sugiarto
相关产品推荐
相关产品推荐

