You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift(UIKit)中如何获取UIButton的Frame起始X坐标?

解决UIButton相对于屏幕的起始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坐标,所以在父视图里按钮左对齐时会返回0
  • bounds.origin.x是按钮自身内部坐标系的原点,本身就固定为0
  • layer.position.x是按钮中心点相对于父视图的X坐标,自然会对应文字区域的位置

用转换后的screenOrigin.x作为下划线起始点,就能完美对齐按钮的红色背景左边缘。


内容的提问来源于stack exchange,提问作者Aldo Sugiarto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 19:37:33