的底部按鈕的距離,我希望得到一個按鍵的距離,屏幕底部的斯威夫特3斯威夫特3:獲取屏幕
我可以看到在故事板的正確值,當我看着距離(alt鍵),但不幸的是我無法手動計算它。
我正在查找的值與按鈕的「垂直間距到底部佈局」約束中的常量相同。
view.frame.maxY - randomButton.frame.maxY
給了我一個價值太高的方式。
的底部按鈕的距離,我希望得到一個按鍵的距離,屏幕底部的斯威夫特3斯威夫特3:獲取屏幕
我可以看到在故事板的正確值,當我看着距離(alt鍵),但不幸的是我無法手動計算它。
我正在查找的值與按鈕的「垂直間距到底部佈局」約束中的常量相同。
view.frame.maxY - randomButton.frame.maxY
給了我一個價值太高的方式。
view.frame.size.height - (button.frame.size.height + button.frame.origin.y)
我認爲它好!希望它可以幫助
使用此,我們將會從該按鈕的底部視圖的底部(測試):
view.frame.size.height - randomButton.frame.size.height/2 - randomButton.frame.origin.y
爲什麼身高/ 2? –
這就是如果它的起源在中心!如果它位於頂部,那麼它只是高度,如果它位於底部,則應該從高度減去任何東西。 –
如果你的按鈕不是視圖控制器的視圖的直接繼任者(又名,層次結構就像ViewController的View - > SomeOtherView-> Button),你不會通過簡單的使用框架來獲得正確的數學。您必須將按鈕的Y位置轉換爲窗口對象的座標空間或視圖控制器的主視圖。
看看這個問題:Convert a UIView origin point to its Window coordinate system
let realOrigin = someView.convert(button.frame.origin, to: self.view)
然後申請盧卡斯Palaian建議的數學。
let bottomSpace = view.frame.maxY - (button.frame.height + realOrigin.y)
另一種解決辦法,萬一東西真的野生和奇怪的是在那裏發生的,是拖放按鈕的底部約束的出口。 (從Interface Builder的視圖層次結構中選擇約束,按住控制鍵並將約束拖到視圖控制器中。)然後在代碼中可以訪問該常量。
let bottomSpace = myButtonBottomConstraint.constant
請添加更多代碼,如* where * this single line is。根據它的位置 - 像viewDidLoad() - 你實際上可能會得到一個負值。 – dfd
我說過你實際上想要做什麼?這聽起來像你想要在按鈕和屏幕底部之間放置另一個視圖?如果是這樣,你應該使用自動佈局或堆棧視圖。 – Fogmeister
代碼是viewDidLoad – Michael