繁体   English   中英

如果视图位于UIStackView内部,则中心点错误

[英]Wrong center point if view is inside UIStackView

我只是想获得UIButton的中心点,如果我点击它在其上绘制一些东西。 但是问题是中心点是错误的。 我的按钮在UIStackView

我想在按钮动作内做什么:

let myButtonCenter = contentView.convert(sender.center, from: stackView)

但这给了我错误的CGPoint()

这是我的视图堆栈:

在此处输入图片说明

我也这样尝试过:

func getTappedButtonCenter(sender: UIButton) -> CGPoint{
        var buttonsArray = [UIButton]()
        for view in stackView.arrangedSubviews {
            let horizontalStackView = view as! UIStackView
            for view in horizontalStackView.arrangedSubviews {
                let button = view as! UIButton

                buttonsArray.append(button)

            }
        }

        let buttonIndex = buttonsArray.index(of: sender)

        let tappedButton = buttonsArray[buttonIndex!] as! UIButton

        return convert(tappedButton.center, from: tappedButton)

    }

所以我的问题是,如果视图位于UIStackView内部,应该如何获取它的中心?

您需要将UIButton框架转换为超级视图。 结帐Apple文档

“它给我错误的CGPoint()”是什么意思? 视图的中心以其超级视图的坐标系表示。 在这种情况下,按钮的超级视图将是堆栈视图。 如果要在视图控制器的内容视图的坐标系中居中,则需要使用一种UIView转换方法,例如:

let temp = sender.center
let myButtonCenter = self.view.convert(temp, from: sender)

(请注意,上面的代码中不需要“ self”,而是添加了“ self”以清楚地表明view是视图控制器的内容视图。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM