2016-07-07 96 views
0

對於我的工作,我正在幫助設計一個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。

我試圖調整它相對於屏幕的大小,但只適用於單個設備,並在切換到不同的平板電腦時出現相同的問題。是否有一個不同的屬性可以在編譯後提供高度和寬度,以便它對當前設備是正確的?

+0

你確定oldMapHeight和寬度是你期望他們是什麼?首次按下mapButton時創建一個日誌事件,並記錄當前視圖的寬度和高度,並將其與您在這兩個變量中存儲的內容進行比較。我猜他們會有所不同......最簡單的解決方案是在mapButtonClick內部將這兩個變量設置爲全屏之前。然後返回應該工作得很好,無論是什麼設備。 – Putz1103

+0

他們不是我認爲他們會。在故事板上的任意視圖中,它們的大小與它們在設備上的實際大小相同。問題已經得到解答,謝謝你看看。 – tdolphay

+0

這個問題在17分鐘後回答了我的意見,並給了你建議(答覆者似乎已經採取了幾乎逐字記錄)。 – Putz1103

回答

0

如何保存幀,並在擴展之前設置它?這個測試代碼似乎完美地爲我工作:

class ViewController: UIViewController { 

    @IBOutlet weak var mapView: MKMapView! 
    @IBOutlet weak var mapButton: UIButton! 
    var mapExpanded = false 
    var oldFrame = CGRectZero 

    @IBAction func mapButtonClicked(sender: UIButton) { 
     if mapExpanded == false { 
      // before expanding, set old 
      oldFrame = mapView.frame 

      mapView.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height) 
      mapButton.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height) 
      mapExpanded = true 
     } else { 
      mapView.frame = oldFrame 
      mapButton.frame = oldFrame 
      mapExpanded = false 
     } 
    } 
} 

在我的例子,我的故事板中使用自動版式地圖和按鈕的地方。我建議你也這樣做。

+0

這真的很漂亮。我不知道你可以做一些簡單的事情,只要設置一個框架等於另一個框架。看起來像這個完美的作品。謝謝您的幫助! – tdolphay

相關問題