簡體   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