2017-05-28 31 views
1

我試圖創建一個堆棧視圖與視圖的嵌套堆棧視圖來創建一個網格。網格中的每個單元都應該有一個標籤。我的問題是,標籤只顯示在第一個視圖中this screenshotUILabel並不總是顯示在其超級視圖

我的主要堆棧視圖的代碼很簡單:

for _ in 1...5 { 
    let view = WeekView()  
    addArrangedSubview(view) 
} 

這是一個嵌套堆棧視圖的代碼。

// Function called in init(frame:) 
func configureView() { 

    spacing = 8 

    for _ in 1...7 { 
     let view = UIView() 
     let label = UILabel() 
     view.addSubview(label) 
     addArrangedSubview(view) 

     label.text = "hi" 
     label.textAlignment = .center 

     view.widthAnchor.constraint(equalToConstant: 40).isActive = true 
     view.translatesAutoresizingMaskIntoConstraints = false 

     label.heightAnchor.constraint(equalTo: view.heightAnchor).isActive = true 
     label.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true 
     label.translatesAutoresizingMaskIntoConstraints = false 
    } 
} 

任何建議將大大appriciated。

+0

您沒有設置標籤的位置,只有它的寬度和高度。 – Sulthan

+0

感謝您的建議,但我認爲如果您移動視圖,其所有子視圖也隨之移動,是不是真的?但我試圖調用'label.frame.origin = view.frame.origin',但它沒有幫助。 – bohdankoshyrets

+0

由於未使用自動識別掩碼,因此無法使用「框架」設置位置。您必須爲每個標籤的X和Y位置添加約束條件。否則,這個位置將是隨機的。 – Sulthan

回答

1

您沒有設置標籤的位置。您可以添加水平和垂直的限制,但你也可以簡單地做:的

label.translatesAutoresizingMaskIntoConstraints = true 
label.frame = view.bounds 
label.autoresizingMask = [.flexibleWidth, .flexibleHeight] 

代替

label.heightAnchor.constraint(equalTo: view.heightAnchor).isActive = true 
label.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true 
label.translatesAutoresizingMaskIntoConstraints = false 
0

的問題可能是你沒有設置

label.translatesAutoresizingMaskIntoConstraints = false 

請儘量直接創建UI元素之後設置:

let view = UIView() 
view.translatesAutoresizingMaskIntoConstraints = false 
let label = UILabel() 
label.translatesAutoresizingMaskIntoConstraints = false 
view.addSubview(label) 
... 
view.widthAnchor.constraint(equalToConstant: 40).isActive = true 
view.heightAnchor.constraint(equalToConstant: 40).isActive = true 

然而,你的情況我會極力推薦使用UICollectionView。如果你使用它,你會得到很多免費的東西(包括平滑的水平滾動)。 圖像看起來像你正在建立某種日曆應用程序。如果您使用UICollectionView,您還可以獲得非常靈活的間距和整體佈局API。

+0

感謝您的建議,我添加了'view.translatesAutoresizingMaskIntoConstraints'。不幸的是它沒有幫助。其實我正在尋找'UICollectionView',我想我會重寫這個代碼,在這之前,雖然我真的想知道爲什麼這個標籤是這樣的行爲。 – bohdankoshyrets

相關問題