Arabirim Oluşturucu'da "Genişlik eşittir yükseklik" kısıtlaması


93

Interface Builder'da 'genişlik eşittir yükseklik' anlamına gelen 'kare' kısıtlaması oluşturmanın bir yolunu bulamıyorum. Sanırım böyle bir kısıtlamayı programlı olarak eklemek mümkün. IB'de yapabileceğim bir şey var mı? Belki de görmüyorum? Önemsiz görünüyor, ancak bulamıyorum.


Peter Ammon'un WWDC'12'de "Arayüz Oluşturucuya olabildiğince güvenin" hakkında konuştuğunu hatırlıyorum. Ne kadar ironik.
DemoniacDeath

4
Evet, bence düzen kısıtlamalarının uygulanmasında hala eksik olan birkaç şey var. Görünüşe göre çoğu parametreye erişmemize izin verdiler, ancak çarpana değil, bu birçok şey için yararlı olacaktır.
rdelmar

Ama gittikçe daha iyi hale geliyor! Demek istediğim, Auto Layout 3 yıldan daha kısa bir süre önce tanıtıldı ve benim açımdan destek bugünlerde gerçekten çok iyi.
Lukas Kubanek

Yanıtlar:


188

Xcode 5.1b5'i güncelleyin

genişlik, yüksekliğe eşittir

Ctrl + tıklayın ve bir görünümden sürükleyin ve işaretçi görünümün üzerindeyken bırakın. "En Boy Oranı" seçin. Birinci ve ikinci öğenin görünüm olduğu bir kısıtlama yaratacaktır.


Xcode 5.1'den önce

Yapamazsınız çünkü genişlik / yükseklik düzenleyicide başka bir özellikle ilişkilendirmek veya oranı ayarlamak için alanlar eksiktir:

genişlik sınırlaması

Bu nedenle, Interface Builder'da aşağıdaki kodu ifade edemezsiniz:

CGFloat ratio = 1.0;
NSLayoutConstraint *constraint = [NSLayoutConstraint
    constraintWithItem:myView
    attribute:NSLayoutAttributeWidth
    relatedBy:NSLayoutRelationEqual
    toItem:myView
    attribute:NSLayoutAttributeHeight
    multiplier:ratio
    constant:0];
constraint.priority = 1000;
[myView.superview addConstraint:constraint];

1
En son güncelleme için teşekkürler. Xcode 5.1 beta 5 aslında en boy oranı kısıtlamalarını IB'de ayarlamanıza izin veriyor, ancak projeyi derlemeye çalıştığımda şu hatayı alıyorum: 5.1'den önceki Xcode sürümlerinde en boy oranı kısıtlamaları . Bu yüzden belki de son 5.1 sürümünü beklememiz gerekiyor. Senin için de aynı mı @Jano?
Lukas Kubanek

Evet, XIB'lerde yapılan değişiklikler geriye dönük olarak uyumlu değildir. 5.1 ile düzenlerseniz, daha düşük sürümlere geri dönemezsiniz.
Jano

Yani xib'i derleyebiliyor musunuz? Benim için Xcode 5.1 beta 5 ile bile çalışmıyor.
Lukas Kubanek

1
@ onmyway133, iki görünüm arasında bir sınırlama oluşturur ve çarpanı 1: 2 olarak ayarlayın.
Jano

3
Xcode 7'de, görünümden ctrl + tıklama sürükleyin ve kendi üstüne bırakın ve En boy oranı
inorganik

2

Lütfen resimdeki gibi UI öğesine yeni bir sınırlama, en boy oranı 1: 1 ekleyin.

En boy oranını 1: 1 olarak ayarlayın


0

Başlamak için, kontrol düğmesini düğmeden kendisine çapraz olarak sürükleyin. Genişlik ve yükseklik sınırlamaları ekleyebileceğiniz bağlamsal bir menü görünecektir. Her birine Shift + tıklayın; kısıtlamayı eklediğinizi gösteren bir onay işareti görünecektir. (Her ikisini de eklemeden önce iletişim kutusunu yanlışlıkla kapatırsanız sorun değil, sürükleme adımını tekrarlayın ve diğerini ayarlayın):

görüntü açıklamasını buraya girin

İlk eklendiğinde, bu kısıtlamalar düğmenin mevcut genişliğini ve yüksekliğini alır, bu nedenle her bir kısıtlamayı daha uygun bir değer vermek için ayarlamanız gerekir. Resmimiz kare olmasına rağmen bunu birer birer yapmak zorunda kalacağız, bu nedenle düğmeyi orantılı olarak yeniden boyutlandırmak için her iki kısıtlamada da aynı sabit değeri kullandığınızdan emin olun. Kısıtlamaya çift tıklayın ve sabit alanına daha küçük bir değer girin:

görüntü açıklamasını buraya girin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.