Masalah tata letak setelah memperbarui ke Xcode 8

102

Ini adalah sebelum dan sesudah dari salah satu layar saya setelah saya meningkatkan ke Xcode 8.
Yang saya lakukan hanyalah membuka main.storyboard saya dan dari sana, saya membuat dan menjalankan aplikasi saya di ponsel saya.
Dalam kontrol versi saya, saya dapat melihat Xcode melakukan banyak perubahan pada main.storyboard saya hanya dari saya membukanya.
Setiap kali saya menghapus perubahan itu, saya dapat melihat apa yang saya gunakan untuk melihat di Xcode 7.3.1.
Tapi, segera setelah saya membuka kembali pembuat antarmuka dengan papan cerita saya, saya melihat perubahan itu kembali ke tempatnya.

Apakah ada yang bisa saya lakukan di sini?

Sebelum Xcode 8

masukkan deskripsi gambar di sini

Setelah memperbarui ke Xcode 8

masukkan deskripsi gambar di sini

pengguna2726072
sumber
Coba buka XCode 8 lagi dengan sumber baru (simpan perubahan apa pun yang dibuat sebelumnya). Sekarang, saat Anda membuka storyboard, sorot semua item UI Anda dan klik "Perbarui Bingkai". Ini mungkin memperbaiki masalah Anda.
d1str0
6
Bisakah Anda melaporkan bug di bugreport.apple.com dan melampirkan storyboard tempat terjadinya hal ini? Kami ingin menganalisis ini lebih lanjut.
Quinn Taylor
1
Saya memiliki masalah yang sama persis. Setelah membuka storyboard saya di Xcode8 dan menerima Dialog "Pilih tampilan perangkat awal", semuanya bertingkah aneh. Ketika saya memperbarui semua bingkai, IB terlihat bagus, tetapi setelah membangun, aplikasi benar-benar rusak. Mengujinya dengan 4 aplikasi.
Cherrypig
@QuinnTaylor Saya mengalami masalah yang sama, setelah Xcode 8 mengubah storyboard saya, UIImageViews di UITableViews tidak menampilkan konten apa pun meskipun garis besarnya terlihat di Debug View Hierarchy. Objek lain dari kelas yang sama yang ada di UICollectionViews tidak terpengaruh.
Manuel
XIB atau Storyboard menetapkan default sebagai versi 7.x yang lebih lama dan Simpan dan Tutup. Solusi sementara, tetapi berhasil. Jangan buka lagi setelah Anda selesai Simpan dan Tutup. Jika tidak lagi perlu mengikuti langkah yang sama dari awal.
Bhavesh Kumbhani

Jawaban:

111

Saya memiliki masalah serupa dengan gambar tableview tidak muncul setelah saya mengonversi file storyboard agar kompatibel dengan Xcode8. Ini terlihat seperti bug dengan Xcode8, jadi sampai perbaikan bug dirilis, berikut adalah solusinya:

  1. Buka storyboard Anda di Xcode 8 dan pilih tampilan perangkat awal. Lakukan perubahan seperti biasa.
  2. Setelah Anda menyelesaikan perubahan Anda, pilih storyboard -> File Inspector -> Buka di -> Pilih 'Xcode 7.x'.

masukkan deskripsi gambar di sini

  1. Pilih 'Simpan dan Tutup' saat diminta
  2. Perubahan storyboard Anda akan disimpan, dan storyboard Anda akan berfungsi seperti sebelum Xcode8.

Jika Anda perlu membuat perubahan lain pada file storyboard, ikuti langkah-langkah ini lagi.

David T
sumber
Wow +1 pasti untuk ini. Saya berjuang dengan ini di iOS 10 dalam TodayExtension saya. Baru setelah saya mempersempit semuanya, menganalisis git diff, saya melihat pengeditan storyboard xml yang dicurigai ditambahkan oleh Xcode 8. Setelah menyimpan dokumen storyboard untuk Xcode 7 (setelah melakukan pengeditan), sekarang saya dapat membuat dan mengirim menggunakan Xcode 8 untuk iOS 10. Terima kasih.
John Erck
Ini pasti terlihat bug. Menyimpan sebagai Terbuka di Xcode 7.x berfungsi untuk saya sebagai solusi sementara.
Steve A
Saya menghabiskan 3 hari terakhir untuk memperbaiki semua tata letak yang rusak dari satu tempat ke tempat lain di Xcode8 sampai saya menemukan posting ini. Saya mungkin harus mempercayai orang-orang seperti kalian lebih dari Apple. tidak percaya ini menyia-nyiakan begitu banyak waktu saya. Terima kasih banyak David untuk ini!
Xu Yin
@XuYin Haruskah kita melakukan ini untuk setiap papan cerita? Maksud saya, bagaimana jika saya memiliki papan cerita lain dalam proyek saya? Bagaimana dengan file Xib? haruskah saya melakukannya untuk mereka juga?
Madu
@Sayang saya tidak melakukannya di storyboard, tetapi saya melakukannya di setiap file xib yang bermasalah. tetapi saya pikir Anda mungkin ingin mencobanya di storyboard juga jika Anda melihat masalah tata letak yang aneh. karena perbaikan itu hanya akan memakan waktu sekitar 5 detik. dan setelah membangun kembali aplikasi, Anda seharusnya dapat melihat perbaikan dengan sangat cepat.
Xu Yin
14

XIB atau Storyboard menetapkan default sebagai versi 7.x yang lebih lama dan Simpan dan Tutup. Solusi sementara, tetapi berhasil. Jangan buka lagi setelah Anda selesai Simpan dan Tutup. Jika tidak lagi perlu mengikuti langkah yang sama dari awal.masukkan deskripsi gambar di sini

Bhavesh Kumbhani
sumber
6
Ini tidak membantu karena saya perlu mengerjakan file. Semua ini dilakukan adalah menyimpan file untuk kompatibilitas mundur. Itu tidak mengizinkan xib untuk diedit di Xcode 8.
jowie
saya melakukan ini tetapi sekali lagi ketika saya memilih file xib di dropdown itu menunjukkan xcode 8.0 saja ...
jayant rawat
8

Eh masalah yang sama. Saya sebagian berhasil memperbaikinya dengan cara berikut ( untuk Xcode Versi 8.1 (8B62) )

Dalam kerangka dokumen Storyboard, saya mengklik setiap adegan yang memiliki panah kuning yang menunjukkan beberapa masalah tata letak (Nomor 1 di tangkapan layar)

Setelah ini, untuk setiap adegan yang bermasalah, saya harus mengklik ikon kecil "Perbarui Bingkai" (Nomor 2 pada tangkapan layar) yang memperbaiki semua masalah tata letak per adegan.

masukkan deskripsi gambar di sini

Namun satu adegan dalam kasus saya masih dalam keadaan menangis setelah transisi dari Xcode7 ke Xcode8. Saya harus memperbaikinya secara manual dengan menyesuaikan batasan atau menambahkan batasan yang hilang.

Fiuh, bukan kejutan yang menyenangkan dari XCode8 dan Storyboards. Jika Anda menggunakan editor AppCode, Anda tidak akan mengalami masalah seperti itu, karena tidak mendukung Storyboards; P.

Semoga berhasil!

TekMi
sumber
7

Xcode 8.1 Beta 2 menyelesaikan masalah ini. Silakan periksa tautan unduhan ini

https://developer.apple.com/download/

Maniganda saravanan
sumber
4
Saya rasa tidak ... :(
Vaibhav Saran
Xcode 8.3.2 mendapatkan masalah yang sama. Fck Xcode dan Apple :(
lee
6

Silakan ikuti utas untuk solusi yang mungkin: (Saya yakin ini terjadi pada banyak pengembang).
Xcode 8 GM seed Storyboard masalah
Xcode 8 - Storyboard sebelumnya terdistorsi

(Saya menggunakan anyH anyW width 600) Ketika Xcode diperbarui ke Xcode 8, itu mengubah semua ukuran ViewControllers saya. Akibatnya semua tata letak terdistorsi.
Saat ini saya hanya melihat 3 solusi untuk masalah ini (saya tidak percaya menunggu perbaikan segera).

1. Pergi untuk setiap Viewcontroller dan perbaiki dengan Update Frames.

2. Pergi ke ViewController utama Size Inspector -> Freeform -> 600karena sebagian besar pengontrol disimpulkan itu akan mengubah ukuran untuk semuanya. (Hati-hati dengan dampak dari Fitur baru yang ingin saya perkenalkan Apple).

3. Buang perubahan git untuk storyboard (Saya tidak menyarankannya karena Apple juga memasukkan beberapa pembaruan yang mungkin penting untuk Xcode).

Tautan tambahan untuk fitur AutoLayout baru di Xcode 8 (WWDC16): Membuat Aplikasi Adaptif, Bagian 1

Mike.R
sumber
1
Opsi 1 adalah yang paling masuk akal dan berhasil untuk saya. Seperti yang dicatat oleh Mike.R, berhati-hatilah dalam mencoba 'mengelabui' Xcode agar memperbaiki berbagai hal karena lebih banyak masalah di trek tidak dapat dihindari.
arcady bob
Saya menggunakan opsi 1 juga (menurut saya lebih aman). Tapi itu memakan waktu.
Mike.R
5

Dalam kasus saya, solusi berfungsi yang disarankan oleh Akhil Kateja dan saya juga perlu mengatur ulang Lebar dan Tinggi tampilan utama:

1) Atur Ukuran Tampilan ke Bentuk Bebas

masukkan deskripsi gambar di sini

2) Atur Ulang Lebar dan Tinggi tampilan ke ukuran aslinya:

masukkan deskripsi gambar di sini

Akhirnya simpan dan Anda selesai.

mini christian
sumber
4

Bagi saya solusinya hanya dengan mengklik UIViewController yang mengalami masalah dan kemudian Editor > Resolve Auto Layout Issues > All Views In ... > Updates Frames

Ini mengatur ulang tampilan agar sesuai dengan batasan yang ada berdasarkan tampilan default yang baru dipilih (iPhone 7 dalam kasus saya).

Perhatikan juga: jika Anda mendapatkan peringatan Tampilan Salah Taruh Bilah Navigasi seperti yang saya lakukan, cukup pilih UINavigationController / UIViewController dan kemudian Attributes Inspector > Bar Visibility > Shows Navigation Bar- matikan lalu ON lagi.

whycodewhyyyy
sumber
3

Mengatur Ukuran Tampilan ke Bentuk Bebas dari Tereka berhasil untuk saya. Ini dapat ditemukan di bawah judul Metrik yang Disimulasikan di Attributes Inspector .

Akhil Kateja
sumber
3

Saya memiliki masalah yang sama dan saya telah menyelesaikannya dengan memperbarui paksa batasan tampilan pengontrol. Letakkan kode berikut dalam fungsi viewDidLoad () Anda

self.view.layoutIfNeeded()
Bill Panagiotopoulos
sumber
1
Cheers Bill! 'layoutIfNeeded' itu berhasil untuk saya! (Setelah mencoba yang lainnya selama berjam-jam ..)
Ethan Halprin
3

Saya memilih setiap pengontrol dan mengklik "Perbarui Bingkai" dan itu memperbaiki tata letak.

Mayckon Barbosa
sumber
3

Jawaban dari @ david-truong ( https://stackoverflow.com/a/39589860/1407528 ) tidak berfungsi dalam kasus saya, jadi jika Anda berada dalam situasi yang sama, coba ini:

Jika semua perangkat Anda diperbarui ke iOS 10+, versi Xcode ini tidak akan mengenali perangkat tersebut sebagai perangkat yang kompatibel. Jadi, coba trik ini:

  • Buka: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
  • Salin folder yang terkait dengan iOS 10 atau 10.1 ke: / Applications / Xcode 7.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
  • Buka proyek dengan Xcode 7.3.1 (restart Xcode jika Anda sudah membukanya)
  • Pilih perangkat iOS 10+ Anda yang terhubung
  • Dorong Lari

Catatan: Fitur baru seperti Swift tidak akan tersedia menggunakan trik ini, tetapi Anda harus dapat memuat dan membangun proyek Anda.

goe
sumber
3

Semoga ini bisa membantu

Ketika saya memperbarui Xcode dari 7,3 ke Xcode 8 dan menjalankan aplikasi, beberapa tampilan ditampilkan dengan sempurna tetapi beberapa terdistorsi. Kemudian, saya memeriksa file nib dan itu mendorong saya untuk memilih ukuran perangkat tertentu dan kemudian menampilkan ujungnya sesuai dengan itu ukuran perangkat yang tentunya tidak Any-Any(Xcode 7.3) . Jadi semua file ujung pena tidak ditampilkan dengan cara yang benar.

Solusi bekerja dari saya: - tekan panah kuning seperti yang ditunjukkan pada gambar di bawah ini

masukkan deskripsi gambar di sini

itu akan meminta pop up yang menampilkan opsi seperti

masukkan deskripsi gambar di sini

pilih Update Framesdengan Apply to all views in containercheck.it akan menyelesaikan sekitar 90% UI yang terdistorsi dan masalah batasan tata letak otomatis lainnya dapat diselesaikan secara manual.

Anurag Bhakuni
sumber
Ini juga dapat merusak Layout. IMHO ini harus dilakukan dengan sangat hati-hati, satu tampilan pada satu waktu dan memeriksa apakah semuanya berhasil sebelum melanjutkan.
Brainray
ya, tentu saja Anda perlu meluangkan waktu untuk itu dan solusi ini mungkin membantu Anda dalam jangka yang lebih lama seperti ketika Anda ingin memperbarui beberapa UI Anda.
Anurag Bhakuni
1

Untuk memperbaiki masalah serupa, saya mengonfigurasi xib sebagai Bentuk Bebas (bukan Disimpulkan) DAN menyimpan file xib sebagai kompatibel dengan Xcode 7.x. Kedua langkah tersebut diperlukan dalam kasus saya. Saya harap itu membantu!

Juan Sagasti
sumber
1

Saya melihat satu tombol baru di Xcode 8.2, (periksa lingkaran oranye di gambar). Ini akan memberi Anda bantuan.

Langkah-langkah: 1. Buka storyboard dan pilih perangkat apa pun yang Anda inginkan 2. Cukup pilih View Controller 3. Klik tombol yang disebutkan (seperti pada Gambar) 4. Ini akan memperbarui bingkai untuk pengontrol tampilan tersebut dan Anda dapat melanjutkannya

Saya tidak menemukan solusi yang lebih baik dari ini. Silakan balas jika ditemukan.

Tangkapan layar IB

Shahul Hasan
sumber
Tidak ada yang terjadi.
Muju
0

kendala pembaruan dan subview tata letak di viewdidload memecahkan masalah

- (void) viewDidLoad {
        [self.view updateConstraints];
        [self.view layoutSubviews];
        [super viewDidLoad];
}
karthikPrabhu Alagu
sumber