BAK, ARA YOK!
Orijinal cevabımın, özellikle @ Rivera'nın yararlı önerilerinin yorumlar bölümündeki önerilere dayanarak, orijinal yanıtımı basitleştirdim.
Bunun ne kadar basit olduğunu göstermek için gifler kullanıyorum. Umarım gifleri yararlı bulursunuz. Gif'lerle ilgili bir sorununuz olması durumunda, eski cevabı aşağıda düz ekran çekimlerine ekledim.
Talimatlar:
1) Düğmelerinizi veya etiketlerinizi ekleyin. 3 düğme kullanıyorum.
2) Her düğmeden denetime bir merkez x kısıtlaması ekleyin:
3) Her düğmeden alt düzen kısıtlamasına bir sınırlama ekleyin:
4) Yukarıdaki # 3'e eklenen kısıtlamayı aşağıdaki gibi ayarlayın:
a) kısıtlamayı seçin,
b) sabiti kaldırın (0'a ayarlı),
c) çarpanı aşağıdaki gibi değiştirin: + 1 düğmelerinin sayısını alın ve üstten başlayarak çarpanı buttonCountPlus1: 1 olarak ayarlayın ve sonra buttonCountPlus1 : 2 ve son olarak buttonCountPlus1: 3 . (İlginizi çekiyorsa, bu formülü nereden aldığımı aşağıdaki eski cevapta açıklarım).
5) İşte bir demo çalışıyor!
Not: Düğmeleriniz daha yüksek yüksekliklere sahipse, kısıtlama düğmenin altından olduğu için bunu sabit değerde telafi etmeniz gerekir.
Eski Cevap
Apple'ın belgelerine ve Erica Sadun'un mükemmel kitabına ( Auto Layout Demystified ) söylediklerine rağmen, ara parçaları olmadan görünümleri eşit olarak boşluklandırmak mümkündür . Bu, IB'de ve kod olarak eşit aralıklarla yerleştirmek istediğiniz herhangi bir sayıda öğeyi kodlamak için çok kolaydır. Tek ihtiyacınız olan "bölüm formülü" olarak adlandırılan bir matematik formülü. Bunu yapmak açıklamaktan daha kolaydır. IB'de göstererek elimden geleni yapacağım, ancak kodda yapmak da kolay.
Söz konusu örnekte,
1) her etiketi merkez kısıtlaması olacak şekilde ayarlayarak başlayın. Bunu yapmak çok basit. Her bir etiketten alta doğru sürüklemeyi kontrol etmeniz yeterlidir.
2) Shift tuşunu basılı tutun, çünkü kullanacağımız diğer kısıtlamayı da ekleyebilirsiniz, yani "alt boşluktan alt düzen kılavuzuna".
3) "Alttan alta yerleşim düzeni kılavuzu" ve "kabın içinde yatay olarak ortala" yı seçin. Bunu 3 etiketin tümü için yapın.
Temel olarak, koordinatını belirlemek ve toplam etiket sayısı artı 1'e bölmek istediğimiz etiketi alırsak, dinamik konumu elde etmek için IB'ye ekleyebileceğimiz bir numaramız olur. Formülü basitleştiriyorum, ancak yatay boşluğu veya hem dikey hem de yatay olarak ayarlamak için kullanabilirsiniz. Süper güçlü!
İşte çarpanlarımız.
Etiket1 = 1/4 = .25,
Etiket2 = 2/4 = .5,
Etiket3 = 3/4 = .75
(Düzenle: @Rivera, oranları doğrudan çarpan alanında kullanabileceğinizi ve xCode ile matematik yapmayı yorumladı!)
4) Şimdi Label1'i ve alt kısıtlamayı seçelim. Bunun gibi:
5) Özellik Denetçisinde "İkinci Öğe" yi seçin.
6) Açılır menüden "İlk ve ikinci öğeyi geri çevir" i seçin.
7) Sabit ve wC hAny değerini sıfırlayın. (Gerekirse buraya ofset ekleyebilirsiniz).
8) Bu kritik kısımdır: Çarpan alanına ilk çarpanımızı 0.25 ekleyin.
9) Etiketin y merkezine ortalamak istediğimiz için, üstteki "İlk öğe" yi "Merkez" olarak ayarlayın. Tüm bunlar nasıl görünmeli.
10) Her etiket için bu işlemi tekrarlayın ve ilgili çarpanı takın: Etiket2 için 0.5 ve Etiket3 için 0.75. İşte tüm kompakt cihazlarla her yönde son ürün! Çok basit. Kod yığınları ve aralayıcılar içeren birçok çözüme baktım. Bu konu hakkında gördüğüm en iyi çözüm.
Güncelleme: @kraftydevil, Alt mizanpaj kılavuzunun xibs'de değil, yalnızca film şeridinde göründüğünü ekler. Xibs içinde 'Konteyner için Alt Boşluk' kullanın. İyi yakalama!