2017-01-27 60 views
1

的底部按鈕的距離,我希望得到一個按鍵的距離,屏幕底部的斯威夫特3斯威夫特3:獲取屏幕

我可以看到在故事板的正確值,當我看着距離(alt鍵),但不幸的是我無法手動計算它。

我正在查找的值與按鈕​​的「垂直間距到底部佈局」約束中的常量相同。

view.frame.maxY - randomButton.frame.maxY 

給了我一個價值太高的方式。

+1

請添加更多代碼,如* where * this single line is。根據它的位置 - 像viewDidLoad() - 你實際上可能會得到一個負值。 – dfd

+0

我說過你實際上想要做什麼?這聽起來像你想要在按鈕和屏幕底部之間放置另一個視圖?如果是這樣,你應該使用自動佈局或堆棧視圖。 – Fogmeister

+0

代碼是viewDidLoad – Michael

回答

2
view.frame.size.height - (button.frame.size.height + button.frame.origin.y) 

我認爲它好!希望它可以幫助

0

使用此,我們將會從該按鈕的底部視圖的底部(測試):

view.frame.size.height - randomButton.frame.size.height/2 - randomButton.frame.origin.y 
+0

爲什麼身高/ 2? –

+0

這就是如果它的起源在中心!如果它位於頂部,那麼它只是高度,如果它位於底部,則應該從高度減去任何東西。 –

3

如果你的按鈕不是視圖控制器的視圖的直接繼任者(又名,層次結構就像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