Apa itu 'Vary for Traits' di Xcode 8?


86

Saya menggunakan kelas AutoLayout dan Ukuran, tetapi dengan rilis iOS 10 dan Xcode 8.0 baru, ada satu opsi baru Vary for Traits. Apakah ini pengganti Size Classe untuk lebar dan tinggi perangkat yang berbeda.

masukkan deskripsi gambar di sini

Dengan memilih widthkotak centang, itu akan ditampilkan varying 14 compact width devices.

masukkan deskripsi gambar di sini

Dengan memilih heightkotak centang, itu akan ditampilkan varying 18 compact height devices.

masukkan deskripsi gambar di sini

Dengan memilih kedua kotak centang, ini akan ditampilkan varying 11 compact width regular height devices.

masukkan deskripsi gambar di sini

Bagaimana cara memanfaatkan opsi ini? Bisakah kita menggunakan AutoLayout dengan kelas ukuran seperti Xcode7.0? Jika ada yang memiliki pengetahuan mendalam maka tolong jelaskan.


Lihat video sesi WWDC 2016. Saya yakin itu tercakup di suatu tempat sebagai "fitur baru Xcode".
Martin R

Jawaban:


134

Ini hanyalah ekstensi tentang cara menggunakan "Vary Traits" dengan cepat dalam proyek Anda untuk menambahkan tata letak yang berbeda untuk iPad dan iPhone.

Silakan baca ini untuk memahami lebih lanjut tentang kelas Ukuran.

https://developer.apple.com/reference/uikit/uitraitcollection

masukkan deskripsi gambar di sini

Jika Anda melewatkan contoh berikut di bawah ini, bacalah Ringkasan di bagian akhir.


  • OBJEKTIF :

Anda memerlukan tombol dengan lebar berbeda di iPhone dan iPad. Yang pertama memiliki lebar 80 dan yang terakhir memiliki lebar 300.

  • METODE 1:

Vary for Traits with Multiple Constraints as diinstal.

  • LANGKAH :

    1. Tambahkan kendala umum terlebih dahulu seperti Pusatkan tombol secara horizontal dan vertikal.

masukkan deskripsi gambar di sini

  1. Pilih VaryForTraits dan untuk layar iPhone sesuai pedoman kelas ukuran, kelas ukuran C * R sesuai dengan model dan ini kami memeriksa tanda centang Lebar & Tinggi di PopUp. Singkirkan pop-up dengan mengklik di mana saja di layar.

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

  1. Tambahkan konstanta lebar dan periksa apakah batasan ditambahkan untuk kelas ukuran C * R. Setelah menambahkan batasan, pilih tombol Selesai Memvariasikan.

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

  1. Untuk layar iPad, pilih lagi perangkat iPad dan pilih VaryForTraits dan kali ini saat mengklik lebar-tinggi, itu akan menunjukkan variasi R * R.

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

  1. Sekali lagi tambahkan batasan lebar, batasan lebar iPhone yang ditambahkan terakhir harus dihilangkan seperti pada tangkapan layar. Nilai tambahnya adalah untuk kelas ukuran R * R kali ini.

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

  1. Beralih kembali ke tata letak iPhone dan dibutuhkan 80 sebagai lebar dan iPad akan membutuhkan 300.

masukkan deskripsi gambar di sini

KESIMPULAN:

Harap perhatikan bahwa ada total dua batasan yang ditambahkan dan di kedua batasan tersebut, nilainya berbeda sesuai dengan kelas ukuran yang dipilih.


  • METODE 2:

Vary for Traits with Single Constraint, Multiple Size-Class diinstal

  • LANGKAH :
    1. Tambahkan batasan lebar normal. Kemudian pilih batasan itu dan pilih tombol + di samping nilai Konstanta.

masukkan deskripsi gambar di sini

  1. Tambahkan variasi sifat, dan untuk iPhone kami memilih C * R dan menetapkan nilai konstanta 100.

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

  1. Sekali lagi untuk iPad yang mengikuti variasi sifat sebagai R * R, kami menambahkan variasi lain dengan mengklik lagi tombol + dan mengatur nilainya sebagai 300.

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

  1. Pilih iPad dan lebarnya akan secara otomatis diambil sebagai 300 dan kembali ke iPhone dibutuhkan 100 sebagai nilainya.

masukkan deskripsi gambar di sini

KESIMPULAN:

Ini tampaknya menjadi opsi yang lebih baik daripada menambahkan dua batasan ketika satu batasan hanya diperlukan dan nilai konstanta berbeda.

KAPAN DIGUNAKAN, APA YANG HARUS DIGUNAKAN:

Kedua pendekatan tersebut pada dasarnya melakukan hal yang sama, menetapkan nilai ke kelas Ukuran.

Tapi, # Method1 digunakan ketika Anda ingin menambahkan batasan khusus untuk perangkat atau katakanlah kelas ukuran. Misalnya, di iPhone tombol harus dari 50 poin teratas dan di iPad tombol harus dipusatkan secara horizontal dan vertikal. Dalam situasi seperti itu, Anda perlu menggunakan VaryForTraits karena VaryForTraits membuka pintu untuk menambahkan batasan untuk kelas ukuran tertentu.

# Method2 digunakan ketika Anda menginginkan nilai konstanta yang berbeda untuk tipe batasan yang sama.

PS: KEPADA SEMUA ORANG YANG TIDAK MAMPU MENDAPATKAN CONTOH BEKERJA

Harap pastikan, Anda hanya menambahkan batasan yang diperlukan sebagai Terpasang. Kotak centang terhadap Installed seharusnya hanya muncul untuk batasan yang Anda perlukan untuk kelas ukuran. Itulah kuncinya!

masukkan deskripsi gambar di sini

Cukup tambahkan batasan teratas & petunjuk ke uiButton dalam tampilan. Pilih kendala teratas dan hapus centang pada opsi Terpasang dasar dengan tanda Plus. Sekarang, dengan mengklik tanda Plus, tambahkan variasi ke C R dan centang opsi itu. Kini, ubah perangkat dari iPhone ke iPad dengan berbagai kombinasi orientasi. Batasan ini hanya akan diterapkan untuk kelas ukuran C R yaitu iPhone dalam orientasi potret. Jika kotak centang terhadap Installed dasar (yang satu dengan simbol Plus) dicentang, itu berarti batasan harus diterapkan ke semua kelas ukuran.

RINGKASAN:

Variasi Trait adalah perubahan pada tampilan antarmuka pengguna Anda yang didasarkan pada konfigurasi perangkat. Variasi Ciri dari antarmuka pengguna tidak hanya terbatas pada batasan tetapi dapat diterapkan pada lebih banyak lagi. Seperti mengubah warna latar belakang dan elemen lain saat perangkat disetel ke gaya gelap. Variasi dapat diterapkan ke elemen antarmuka pengguna, seperti menghapus batasan, atau ke properti kelas tampilan atau batasan, seperti font untuk label. Anda dapat memvariasikan:

  • Ukuran atau posisi tampilan

  • Pemasangan view

  • Pemasangan menjadi kendala

  • Konstanta batasan

  • Font

  • Warna untuk font, tint, atau background

  • Margin tata letak

  • File gambar

Kumpulan properti spesifik yang dapat Anda variasikan bergantung pada kelas elemen. Dalam contoh, kami telah mendemonstrasikan penggunaan- Instalasi batasan & - Konstanta batasan. Lainnya, cukup sederhana dan dapat dengan mudah disimpulkan.


51
Ini tidak berfungsi untuk saya .. Ini memperbarui batasan pada semua ukuran layar dan praktis tidak ada yang terjadi ...
Dan

5
Jika tidak berhasil, coba baca ini: help.apple.com/xcode/mac/8.0/#/devba3dd0b51 . Jika Anda ingin menyesuaikan font atau properti lainnya, klik "+" yang ada di sebelah kiri properti di panel atribut. Dan Anda tidak dapat memvariasikan ciri untuk iPhone 4s dan iPhone 7 Plus, tergantung pada lebarnya, misalnya, karena keduanya memiliki lebar yang kompak. Anda dapat memvariasikannya untuk iPhone dan iPad.
Denis Kutlubaev

2
Bekerja untuk saya thnx :)
Sanman

1
Itu berhasil untuk saya setelah saya menghapus batasan lama dan menambahkan yang baru, alih-alih mengganti nilainya.
Teodor Ciuraru

2
Untuk orang-orang yang mengatakan ini tidak berhasil. Saya pikir Anda mencoba untuk mengubah semua batasan Anda hanya dapat nilai konstan dalam batasan Anda tidak dapat benar-benar mengubah beberapa atau properti lain dari batasan tersebut. Saya juga bingung pada bagian ini.
3366784

21

Variasi untuk sifat adalah evolusi opsi kelas ukuran yang ada di versi Xcode sebelumnya. Ini memungkinkan variasi yang jauh lebih bagus dan tepat berdasarkan sifat. Tentunya tidak terbatas pada variasi iPad / iPhone saja tetapi Anda dapat menentukan juga variasi berdasarkan orientasi dan perangkat yang berbeda.

Jawaban lain di utas ini memiliki beberapa kekurangan dan ketidakakuratan, mungkin cara paling efisien untuk memberikan jawaban adalah dengan memberi contoh. Demi kejelasan, kami akan membatasi contoh kami hanya pada satu tombol dan dua tata letak. Namun, seperti yang dijelaskan di bawah ini, Anda dapat memperluas contoh berikut sesuai keinginan. Tujuan kami adalah menyesuaikan posisi tombol di antara dua tata letak yang berbeda: lanskap dan potret di semua perangkat.

Catatan: Jika tidak diaktifkan opsi "bervariasi untuk sifat", semua tata letak dan penyesuaian antarmuka ui dirujuk ke semua sifat (mis. Semua kelas ukuran).

fig1

Mari kita mulai dengan meletakkan tombol di papan cerita kita. Karena "variasi untuk sifat" tidak diaktifkan, tombol tersebut akan ada di semua tata letak yang berbeda. Jika, sebaliknya, kami telah mengaktifkan variasi untuk ciri-ciri, tombol hanya akan dirujuk ke ciri tertentu yang dipilih.

fig2

Sekarang, mari aktifkan "variasikan untuk sifat" dan pilih variasi berdasarkan tinggi. Anda harus melihat bahwa layar bawah akan berubah menjadi biru dan sesuai dengan pilihan Anda akan melihat semua perangkat terpengaruh. Sejauh ini bagus.

fig3

Pilih lagi tombol dan tambahkan batasan iklan seperti biasa. Dalam contoh kami, kami akan menambahkan ruang depan atas dan kiri serta lebar dan tinggi. Setelah itu, klik "Done Varying". Anda akan melihat bahwa bagian bawah layar akan berubah menjadi abu-abu lagi. Apa yang terjadi adalah kita telah memberi tahu Interface Builder untuk menambahkan batasan di atas hanya untuk kelas (w: C h: R).

fig4

Sekarang pilih mode lansekap di bagian bawah layar. Anda akan melihat bahwa Tombol berwarna merah, karena tidak memiliki batasan yang Anda tambahkan hanya untuk beberapa ciri. Pilih lagi variasi untuk sifat dan pilih lagi variasi ketinggian. Tambahkan batasan berikut:

fig5

dan tekan selesai bervariasi. Sekarang tombol tersebut teridentifikasi dengan baik di layar baik untuk lanskap maupun potret.

fig6

Bangun dan jalankan. Anda akan melihat bahwa tombol akan berubah sesuai dengan orientasi layar.

Anda dapat membuat tata letak yang lebih canggih mengikuti pola ini. Misalnya, Anda dapat memilih di awal variasi untuk ciri dan menjatuhkan objek UIKit hanya untuk sifat tertentu. Objek ini hanya akan ada dalam varian yang ditentukan dan akan berwarna abu-abu pada varian lain yang memungkinkan Anda membuat antarmuka pengguna yang sama sekali berbeda berdasarkan ciri-ciri.


3
Saya telah menambahkan batasan untuk kelas (wC, hR) kemudian saya mengklik selesai bervariasi. Ketika saya membuka (wR, hR) maka saya juga melihat kendala lama. Cara membuat batasan baru untuk (wR, hR) kelas ini. Tolong beritahu saya @valvolin
Ramcharan Reddy

9

Itu tidak lain adalah size classesdirinya sendiri tetapi dengan representasi yang berbeda. sampai xcode 7kami menggunakan kelas ukuran dan kami mempertimbangkan height-widthdengan regular,compact and anycara, dalam vary for traitskonsepnya sama tetapi xcode secara khusus menjelaskan exact device. Dalam versi yang lebih lama kita tahu bahwa for every iphone in portraintdll jenis informasi di mana dalam hal ini kita dapat mengetahui perangkat yang tepat!

Periksa tangkapan layar di bawah ini,

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

Anda harus merujuk wwdc2016 - video untuk informasi lebih lanjut!

Referensi: Ini Jadi Posting


Ok, izinkan saya memeriksa Video WWDC.
technerd

Anda benar, ini hanyalah evolusi dari kelas ukuran
Durai Amuthan. H
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.