Batasan "Lebar sama dengan tinggi" di Pembuat Antarmuka

93

Saya tidak dapat menemukan cara untuk membuat batasan 'persegi', yang berarti 'lebar sama dengan tinggi' di Interface Builder. Saya kira itu mungkin untuk menambahkan batasan seperti itu secara terprogram. Apakah ada yang bisa saya lakukan di IB? Mungkin saya tidak melihatnya? Tampaknya sepele, namun saya tidak dapat menemukannya.

DemoniacDeath
sumber
Saya ingat Peter Ammon berbicara tentang "Andalkan Interface Builder sebanyak mungkin" di WWDC'12. Ironis sekali.
DemoniacDeath
4
Ya, menurut saya masih ada beberapa hal yang hilang dari penerapan kendala tata letak. Tampaknya mereka telah memberi kami akses ke sebagian besar parameter, tetapi bukan pengganda, yang akan berguna untuk banyak hal.
rdelmar
Tapi itu menjadi lebih baik dan lebih baik! Maksud saya Tata Letak Otomatis diperkenalkan kurang dari 3 tahun yang lalu dan dari sudut pandang saya, dukungannya sangat bagus saat ini.
Lukas Kubanek

Jawaban:

188

Perbarui Xcode 5.1b5

lebar sama dengan tinggi

Ctrl + klik dan seret dari tampilan dan lepaskan saat penunjuk berada di atas tampilan. Pilih "Rasio Aspek". Ini akan membuat batasan di mana item pertama dan kedua adalah tampilan.


Sebelum Xcode 5.1

Anda tidak bisa karena editor lebar / tinggi tidak memiliki bidang untuk dikaitkan dengan properti lain atau menyetel rasio:

batasan lebar

Oleh karena itu, Anda tidak dapat mengekspresikan kode berikut di Interface Builder:

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];
Jano
sumber
1
Terima kasih atas pembaruan terkini. Xcode 5.1 beta 5 sebenarnya memungkinkan Anda untuk mengatur batasan rasio aspek di IB, tetapi ketika saya mencoba untuk mengkompilasi proyek, saya mendapatkan kesalahan berikut: Batasan rasio aspek dengan versi Xcode sebelum 5.1 . Jadi mungkin kita harus menunggu versi 5.1 terakhir. Sama denganmu, @Jano?
Lukas Kubanek
Ya, perubahan pada XIB tidak kompatibel dengan versi sebelumnya. Jika Anda mengedit dengan 5.1 Anda tidak dapat kembali ke versi yang lebih rendah.
Jano
Jadi Anda dapat mengkompilasi xib? Itu tidak bekerja bahkan dengan Xcode 5.1 beta 5 untuk saya.
Lukas Kubanek
1
@ onmyway133 buat pembatas antara dua tampilan dan setel pengganda ke 1: 2.
Jano
3
Di Xcode 7, ctrl + klik seret dari tampilan dan lepaskan di atasnya, dan pilih Rasio aspek
inorganik
2

Harap tambahkan batasan baru, rasio aspek menjadi 1: 1 pada elemen UI seperti pada gambar.

Setel Rasio aspek ke 1: 1

pengguna550088
sumber
0

Untuk memulai, kontrol seret secara diagonal dari tombol ke tombol itu sendiri. Menu kontekstual akan muncul, di mana Anda dapat menambahkan batasan lebar dan tinggi. Shift + Klik masing-masing; sebuah tanda centang akan muncul yang menunjukkan bahwa Anda telah menambahkan batasan. (Jika Anda tidak sengaja menutup dialog sebelum menambahkan keduanya, tidak apa-apa, ulangi langkah seret dan setel yang lainnya):

masukkan deskripsi gambar di sini

Saat pertama kali ditambahkan, batasan ini mengambil lebar dan tinggi tombol saat ini, jadi Anda harus menyesuaikan setiap batasan untuk memberikan nilai yang lebih sesuai. Kita harus melakukan ini satu per satu, meskipun gambar kita persegi, jadi pastikan untuk menggunakan nilai konstan yang sama di kedua batasan untuk mengubah ukuran tombol secara proporsional. Klik dua kali pada batasan, dan masukkan nilai yang lebih kecil di bidang konstannya:

masukkan deskripsi gambar di sini

AbdelraZek
sumber