UIStackView
düzenlenmiş alt görünümlerini konumlandırmak için dahili olarak kısıtlamalar kullanır. Tam olarak hangi kısıtlamaların yaratıldığı, yığın görünümünün kendisinin nasıl yapılandırıldığına bağlıdır. Bir yığın görünümü, varsayılan olarak, düzenlenmiş alt görünümlerini yatay bir çizgide düzenleyerek ön ve arka görünümleri kendi ön ve arka kenarlarına sabitler. Böylece kodunuz aşağıdaki gibi bir düzen oluşturur:
|[view1][view2]|
Her bir alt görünüme ayrılan alan, alt görünümün gerçek içerik boyutu ve sıkıştırma direnci ve içerik sarılma öncelikleri gibi bir dizi faktör tarafından belirlenir. Varsayılan olarak, UIView
örnekler gerçek bir içerik boyutu tanımlamaz. Bu genellikle UILabel
veya gibi bir alt sınıf tarafından sağlanan bir şeydir UIButton
.
İçerik sıkıştırma direnci ve iki yeni UIView
örneğin içerik sarılma öncelikleri aynı olacağından ve her iki görünüm de içsel bir içerik boyutu sağlamadığından, düzen motoru her görünüme hangi boyutun tahsis edilmesi gerektiği konusunda en iyi tahminde bulunmalıdır. Sizin durumunuzda, ilk görünümü kullanılabilir alanın% 100'ü ve ikinci görünüme hiçbir şey atamıyor.
Kodunuzu UILabel
bunun yerine örnekleri kullanacak şekilde değiştirirseniz daha iyi sonuçlar alırsınız:
UILabel *label1 = [UILabel new];
label1.text = @"Label 1";
label1.backgroundColor = [UIColor blueColor];
UILabel *label2 = [UILabel new];
label2.text = @"Label 2";
label2.backgroundColor = [UIColor greenColor];
[self.stack1 addArrangedSubview:label1];
[self.stack1 addArrangedSubview:label2];
Kendiniz için herhangi bir kısıtlama yaratmanın gerekli olmadığını unutmayın. Bu kullanmanın ana yararıdır UIStackView
- kısıtlama yönetiminin geliştiriciden (genellikle çirkin) ayrıntılarını gizler.