Saya berada dalam asumsi (mungkin salah) bahwa mengaktifkan indikator margin kanan di xib setara dengan menggunakan UIViewAutoresizingFlexibleLeftMargin
kode di dalam dan sebagainya.
Jadi, saya dulu berpikir sesuai dengan snapshot ini:
Kemudian hari ini saya harus memeriksa silang, dan menemukan utas ini .
Dan juga dokumentasi apel, berhak dengan bagian dengan judul - "Menangani Perubahan Tata Letak Secara Otomatis Menggunakan Aturan Autoresizing" di tautan ini: https://developer.apple.com/library/content/documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/CreatingViews/ CreatingViews.html
Jadi saya sekarang memiliki konsep baru dalam pikiran saya tentang bagaimana pengaturan masker autoresizing secara pemrograman akan setara dengan pengaturan xib:
Skenario 1 : Pengaturan hanya (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)
setara dengan:
Dalam XIB?
Skenario 2 : Pengaturan (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin)
dalam kode sama dengan:
Dalam XIB?
Apakah 2 skenario saya yang diperbarui benar? Apakah saya sekarang dalam pemahaman saya?
sumber
Jawaban:
Ya, Interface Builder membuatnya "terbalik" dalam arti tertentu (atau UIView, tergantung pada bagaimana Anda melihatnya). "Skenario" yang Anda kutip benar.
sumber
Ya, Anda telah mengutip dengan benar. Juga, saya setuju bahwa itu terasa agak mundur, jadi untuk alasan itu saya menghargai posting Anda.
Anda mungkin suka menggunakan preprocessor Macro
UIViewAutoresizingFlexibleMargins
saat membuat margin UIView fleksibel di segala arah. Saya menempatkan ini di file header yang sudah dikompilasi sehingga disertakan di mana-mana.Menggunakan
UIViewAutoresizingFlexibleMargins
akan membuat Elemen UI tetap terpusat karena TIDAK akan memeluk satu sisi. Untuk membuat elemen tumbuh / menyusut dengan induknya, aturUIViewAutoresizingFlexibleWidth
danUIViewAutoresizingFlexibleHeight
masing - masing.Saya suka menggunakan
UIViewAutoresizingFlexibleMargins
karena nanti saya dapat referensi seperti:dari pada
Semua sering saya melihat margin ini ATAU bersama pada satu baris seperti contoh di atas. Sulit dibaca.
sumber
Mengaktifkan panah vertikal / horizontal (disebut pegas) di dalam kotak akan membuat ketinggian / lebar fleksibel. Tetapi mengaktifkan garis luar (disebut strut) akan membuat sisi itu tidak fleksibel / tidak fleksibel.
Mengaktifkan garis kiri luar (strut kiri) tidak setara dengan mengaktifkan
UIViewAutoresizingFlexibleRightMargin
. Sebaliknya,UIViewAutoresizingFlexibleRightMargin
= aktif jika penyangga kanan dinonaktifkan, mati jika penyangga kanan diaktifkan.Ini agak membingungkan pada awalnya, tetapi jika Anda melihat dari dekat, ada perbedaan dalam mata air dan penyangga. Saya tidak tahu mengapa Apple melakukan ini, tetapi bagi saya, ada beberapa kasus di mana lebih mudah digunakan. Dan menggunakan properti yang berlawanan dalam kode bahkan lebih membingungkan.
sumber
Swift 4 gunakan ini
Objektif-C
sumber