Xcode 6 Storyboard ukurannya salah?

139

Membangun proyek baru dari awal di Swift in Xcode 6 (Beta 1) dan telah melihat beberapa perilaku aneh dengan Storyboards dan output yang saya lihat.

Saya telah membangun antarmuka sederhana (seperti yang ditunjukkan di bawah ini) - dengan properti View Controller disertakan. Ketika saya menjalankan ini di simulator saya akan berharap 'Hello, World' menjadi pusat dalam antarmuka pengguna - namun tampaknya 'Square' ini hanya masuk ke layar iPhone dan dengan demikian tampilan yang salah ditampilkan (lihat di bawah ini) ).

Pertanyaan saya adalah: adakah orang lain yang melihat perilaku ini dan bagaimana mereka memperbaikinya?

Terima kasih!

Lihat dari Editor Storyboard

Inspektur Atribut

Inspektur ukuran

Output Simulator

Permen benang
sumber
tambahkan kendala tata letak otomatis, yang seharusnya memperbaikinya. Anda saat ini merancang untuk semua tata letak, sehingga tata letak otomatis akan membantu Anda menampilkan konten di tempat yang "tepat".
Raz
8
Kiat: Menggunakan asisten editor> otomatis> Pratinjau, Anda akan dapat melihat pratinjau layar dengan semua ukuran layar
Francescu

Jawaban:

81

Sementara jawaban Asif Bilal adalah solusi yang lebih sederhana yang tidak melibatkan Kelas Ukuran (yang diperkenalkan di iOS 8.), sangat disarankan agar Anda terbiasa dengan kelas ukuran karena mereka adalah masa depan, dan pada akhirnya Anda akan ikut bergabung di beberapa titik."


Anda mungkin belum menambahkan batasan tata letak.

Pilih label Anda, ketuk tombol kendala tata letak di bagian bawah:

masukkan deskripsi gambar di sini

Pada menu itu tambahkan lebar dan tinggi (seharusnya TIDAK sama dengan milik saya) dengan mencentang kotak centangnya dan klik tambahkan batasan. Kemudian Kontrol-tarik label Anda ke tampilan utama Anda, dan kemudian ketika Anda mengklik, Anda harus memiliki opsi untuk memusatkan secara horizontal dan vertikal dalam wadah. Tambahkan keduanya, dan Anda harus mengatur.

Dapat Poyrazoğlu
sumber
1
Luar biasa - ini bekerja sangat baik untuk saya - Terima kasih atas bantuan Anda (akan menerima jawaban Anda ketika timer diangkat)
Candyfloss
1
Sama sama. Ini adalah perilaku default dengan autolayout, yang diaktifkan secara default sekarang. Ingat, karena kemungkinan ukuran / tata letak layar yang berbeda, harus ada cara menghitung di mana tampilan akan diposisikan relatif terhadap induknya, dan pembayaran otomatis memperbaiki masalah ini. ketika Anda tidak menambahkan kendala ini, tampilan membuatnya secara otomatis saat runtime tetapi relatif terhadap sudut kiri atas. Jika Anda membutuhkan hal lain dari itu (Anda hampir selalu membutuhkan sesuatu yang lain), Anda perlu menentukan batasan secara eksplisit.
Can Poyrazoğlu
4
Perhatikan kontrol-menyeret (yang bisa canggung) tidak perlu. Tombol di sebelah kiri yang dipilih dalam gambar ini membuka menu yang memungkinkan Anda menyematkan pusat horizontal dan vertikal.
jrturton
Anda benar .. Saya hanya terbiasa dengan kontrol-menyeret itu sebabnya saya mengatakannya seperti itu.
Can Poyrazoğlu
@ CanPoyrazoğlu - Anda menyebutkan "Pilih label Anda." Label apa? Saya memiliki masalah yang sama dengan proyek iPhone baru di mana saya tidak memiliki label atau elemen UI lainnya. Proyek pertama saya di Xcode 6, menggunakan Objective C.
rattletrap99
253

Lakukan langkah-langkah berikut untuk menyelesaikan masalah

Di Storyboard, pilih tampilan apa pun, lalu pergi ke inspektur File. Hapus centang "Gunakan Kelas Ukuran", Anda akan diminta untuk menyimpan data kelas ukuran untuk: iPhone / iPad. Dan kemudian klik tombol "Nonaktifkan Ukuran Kelas". Melakukan ini akan membuat ukuran tampilan storyboard dengan perangkat yang dipilih.

Asif Bilal
sumber
8
Ini adalah jawaban yang benar jika Anda mendapatkan pengontrol tampilan 600x600 ketika Anda menginginkan pengontrol tampilan berukuran standar iPhone misalnya.
Fraggle
5
Ini harus menjadi jawaban yang benar (setidaknya untuk mereka yang hanya bekerja di platform non-Universal)
Raptor
36
Saya tidak tahu mengapa orang menandai ini sebagai jawaban yang benar ... yang pertama adalah cara yang harus dilakukan ... Jika Anda tidak menyukai kendala tata letak daripada Anda berada di arah sebaliknya ... Apple memanfaatkan cara yang baik untuk mengembangkan semua ukuran iPhone dan iPad dan Anda hanya ingin kembali ke barang lama? Karena Anda tidak mampu memperbarui diri? Tidak pernah memilih, tetapi tampaknya jawaban ini membingungkan orang dan membuat kemudian menggunakan pendekatan lama (yang akan ditinggalkan) daripada mendorong kemudian menggunakan hal-hal baru ...
Raphael Ayres
3
Jawaban teratas untuk semua orang yang terbiasa dengan storyboard iPhone / iPad
mamarx
3
Gunakan batasan tata letak ... Apple melakukan ini dengan cara yang sama seperti Android bekerja. Tampilan tidak memiliki bentuk ... Kadang-kadang mungkin menyakitkan, tetapi jika Anda memaksakan ukurannya, Aplikasi Anda akan terlihat buruk pada ukuran perangkat yang berbeda. Jika Anda ingin tombol muncul di sudut kanan bawah, buat saja 2 batasan untuk itu, dan larangan ... tidak ada pilihan X atau Y. Semua akan diatur oleh Engine. Gunakan ukuran intrinsik. Gunakan imajinasimu. Gunakan batasan relasional. Pelajari ini.
Raphael Ayres
18

Jika Anda menggunakan Xcode 6 dan mendesain untuk iOS 8, tidak ada solusi yang benar. Agar ukuran khusus iPhone Anda menjadi berukuran benar, jangan matikan kelas ukuran, jangan matikan metrik yang disimpulkan, dan jangan tetapkan batasan (belum). Sebagai gantinya, gunakan kontrol kelas ukuran, yang merupakan tombol teks yang mudah dilewatkan di bagian bawah Interface Builder yang awalnya berbunyi "wAny hAny".

Klik tombolnya, dan pilih Compact Width, Regular Height. Ini mengubah ukuran pandangan Anda dan mencakup semua orientasi potret iPhone. Dokumen Apple di sini: https://developer.apple.com/library/ios/recipes/xcode_help-IB_adaptive_sizes/chapters/SelectingASizeClass.html atau cari di "Memilih Kelas Ukuran dalam Pembuat Antarmuka"

Eli Burke
sumber
Saya merasa seperti itu berguna untuk membaca seluruh Bantuan Ukuran Kelas Desain di link Anda, yaitu, dari Tentang Merancang untuk Beberapa Kelas Ukuran untuk Menyebarkan Aplikasi dengan Kelas Ukuran pada Versi iOS Sebelumnya .
Franklin Yu
Ini adalah solusi yang bagus jika Anda ingin mempertahankan tata letak otomatis tetapi ingin tampilan papan cerita muncul sebagai lanskap atau potret alih-alih persegi.
stephenspann
5

Di Storyboard, pilih ViewController Anda dan pergi ke Atribute Inspector. Di bagian paling atas, di bawah Metrik Simulasi Anda memiliki properti Ukuran dan Orientasi yang disetel ke Tersirat. Ubah ke nilai yang diinginkan.

Agar aplikasi dapat ditampilkan dengan benar pada ukuran layar lain, Anda juga harus mengatur kendala, seperti yang dijelaskan oleh Can Poyrazoğlu di posting pertama.

David Andrews
sumber
5

Saya punya masalah ini di xcode 6 dan ada cara untuk menyelesaikan konflik ukuran. Jika Anda memilih tampilan Anda, di bagian bawah Anda akan melihat ikon yang terlihat seperti | -Δ- |. Jika Anda mengkliknya, proyek Anda akan diubah ukurannya untuk perangkat yang berbeda.

pengguna2961953
sumber
Ya dan setelah Anda memilih simbol segitiga klik pada tambahkan kendala yang hilang dan booming Anda selesai tampilan akan mengubah ukuran sesuai ukuran perangkat jika aplikasi universal
vishal dharankar
3

Pergi ke Atribut Inspektur (sudut kanan atas) Di Metrik Simulasi, yang memiliki Ukuran, Orientasi, Bilah Status, Bilah Atas, properti Bilah Bawah. Untuk SIZE, ubah Disimpulkan -> Bentuk Bebas.

Rachel
sumber
+1 @Rachel terima kasih atas tip bermanfaat ini tentang Metrik Simulasi -> Ukuran: "Bentuk bebas" (alias, tampaknya, "aktifkan ukuran khusus untuk xib yang dapat digunakan kembali yang didukung oleh tampilan khusus").
cweekly
3

Di halaman storyboard Anda, buka File Inspector dan hapus centang 'Use Size Classes'. Ini akan mengecilkan pengontrol tampilan Anda ke ukuran IPhone biasa yang Anda kenal. Perhatikan bahwa menggunakan 'kelas ukuran' akan memungkinkan Anda merancang proyek Anda di banyak perangkat. Setelah Anda menghapus centang ini, Xcode akan memberi Anda dialog peringatan sebagai berikut. Ini harus jelas.

"Menonaktifkan kelas ukuran akan membatasi dokumen ini untuk menyimpan data untuk satu kelompok perangkat tunggal. Data untuk kelas ukuran yang mewakili perangkat yang ditargetkan akan dipertahankan, dan semua data lainnya akan dihapus. Selain itu, segmen akan dikonversi menjadi non Setara-adaptif. "

Astaga
sumber
3

Bagi siapa pun yang menggunakan XCode 7, sangat mudah untuk mendesain untuk ukuran perangkat tertentu (bukan kanvas persegi-ish standar).

Di Interface Builder, pilih ViewController atau Scene Anda dari menu kiri. Kemudian di bawah Show the Attributes Inspector, buka Simulated Metrics, dan pilih yang diinginkan Sizedari menu dropdown.

Imam
sumber
Itu hanya akan memungkinkan Anda mendesain di storyboard Anda untuk perangkat itu. Saat Anda menjalankan aplikasi Anda, desainnya mungkin sangat bervariasi untuk ukuran layar yang berbeda.
Joey Tawadrous
@ JoeyTawadrous Persis. Tapi itu menjawab pertanyaan yang diajukan :)
Imam
2

Anda mungkin harus menggunakan "Menyelesaikan Masalah Tata Letak Otomatis" (ikon segitiga kanan bawah dalam tampilan papan cerita) untuk menambah / mengatur ulang ke batasan yang disarankan (Xcode 6.0.1).

menabur
sumber