對於我的工作,我正在幫助設計一個iOS應用程序,因此我最近開始使用Swift。在應用程序中,我們有三個不同的元素:Google地圖元素和兩個圖表。我想這樣做,如果你按下這些元素中的任何一個,它們將調整大小以適應屏幕,當你再次按下屏幕時,它們將恢復到原始大小。Swift:在不同的設備上以編程方式查找元素的大小
填充屏幕沒有問題,我已經成功地實現了。但是,當您再次按下時,元素會比最初顯示的更小或更大,具體取決於您運行的設備。目前,我正在通過使用元素的高度和寬度屬性來最小化它,並在用戶按下全屏元素時將它們設置回這些屬性的原始值。但是,它們似乎是硬編碼的,而不是爲任何設備而動態創建,這就是它不能正確回到原始大小的原因。
這是目前我有什麼在我的代碼:
@IBAction func mapButtonClicked(sender: AnyObject) {
if mapExpanded == false {
mapView.frame = CGRectMake(0, 0, self.view.frame.width, self.view.frame.height)
mapButton.frame = CGRectMake(0, 0, self.view.frame.width, self.view.frame.height)
mapExpanded = true
} else {
mapView.frame = CGRectMake(0, 0, oldMapWidth, oldMapHeight)
mapButton.frame = CGRectMake(0, 0, oldMapWidth, oldMapHeight)
mapExpanded = false
}
}
其中oldMapWidth = self.view.mapView.width和oldMapHeight = self.view.mapView.height。
我試圖調整它相對於屏幕的大小,但只適用於單個設備,並在切換到不同的平板電腦時出現相同的問題。是否有一個不同的屬性可以在編譯後提供高度和寬度,以便它對當前設備是正確的?
你確定oldMapHeight和寬度是你期望他們是什麼?首次按下mapButton時創建一個日誌事件,並記錄當前視圖的寬度和高度,並將其與您在這兩個變量中存儲的內容進行比較。我猜他們會有所不同......最簡單的解決方案是在mapButtonClick內部將這兩個變量設置爲全屏之前。然後返回應該工作得很好,無論是什麼設備。 – Putz1103
他們不是我認爲他們會。在故事板上的任意視圖中,它們的大小與它們在設備上的實際大小相同。問題已經得到解答,謝謝你看看。 – tdolphay
這個問題在17分鐘後回答了我的意見,並給了你建議(答覆者似乎已經採取了幾乎逐字記錄)。 – Putz1103