2016-05-24 52 views
0

編輯:我張貼了我想要在iPad和iPhone中實現的屏幕截圖。在iPhone中使用按鈕時,UITableView將打開並且必須覆蓋UITextView的一部分。在Swift 2中以編程方式調整UITextView以放大其寬度

enter image description here

我有iPhone和iPad通用項目。在主故事板中有兩個控件,一個UITextField和一個UITableView。 UITextField保持屏幕的左1/3部分和UITableView剩下的部分。

當在iPhone中,我隱藏了UITableView,我希望UITextView保持所有的屏幕。然後,當用戶點擊一個按鈕時,UITableView出現在文本字段上(當用戶選擇一個選項時,我立即關閉了UITableView)。

我該如何讓tableView以其右邊界放大的方式進入屏幕的右邊界?

+0

你能後的場景截圖? –

回答

1

實現您所描述的一種方法是從場景的「外部」開始,在主視圖中帶有負向主導空間。當用戶按下按鈕時,Leading Space Constraint的值被設置爲零。

例子:

enter image description here

最終結果:

enter image description here

視圖控制器代碼:

class ViewController: UIViewController { 

    @IBOutlet weak var tableViewLeadingMargin: NSLayoutConstraint! 

    @IBAction func revealTableView(sender: UIButton) { 
     UIView.animateWithDuration(
      3.0, 
      animations: { 
       self.tableViewLeadingMargin.constant = 0 
       self.view.layoutIfNeeded() 
      } 
     ) 
    } 
} 

只是有一點需要注意:您將需要調整寬度Tabl的eView以編程方式,基於iPhone屏幕大小。

上面的iPhone問題的答案。對於iPad的,我建議使用大小級,爲他們創造一個特定的佈局/約束:

sizeClasses

舉例說明:

sizeClasseForIpad

+0

謝謝你的幫助。我需要澄清一點。當應用程序在iPad上運行時,TextView佔用了三分之二的空間,當應用程序在iPhone上運行時,相同的TextView必須佔用所有寬度空間。如何在viewDidLoad()中以編程方式調整TextField的大小?您是否真的很樂意幫助我在真正的Swift 2代碼中轉換這個僞代碼? (請參見下文) – Cue

+0

讓模型= UIDevice.currentDevice()。模型 如果模型== 「iPhone」{ mainTextFieldRightBorder = rightBorderOfMainView //僞代碼(實際上不工作) } – Cue

+0

嗨。對於iPad,我建議使用尺寸類別。這樣你就可以爲它們設置特定的佈局/約束條件,而不需要以編程方式進行調整。我更新了我的答案。請看一下。 –

相關問題