Xcode 8'e güncellemeden sonra yerleşim sorunları


102

İşte Xcode 8'e yükselttikten sonra ekranlarımdan birinin öncesi ve sonrası. Tek
yaptığım main.storyboardumu açmaktı ve oradan uygulamamı telefonumda oluşturup çalıştırdım.
Sürüm kontrolümde, Xcode'un main.storyboard'umda sadece onu açtığım andan itibaren birçok değişiklik yaptığını görebiliyorum.
Bu değişiklikleri her sildiğimde, Xcode 7.3.1'de görmek için ne kullandığımı görebiliyorum.
Ancak, arayüz oluşturucuyu film şeridimle yeniden açar açmaz, bu değişikliklerin tekrar yerine geldiğini görüyorum.

Burada yapabileceğim bir şey var mı?

Xcode 8'den önce

görüntü açıklamasını buraya girin

Xcode 8 güncellemesinden sonra

görüntü açıklamasını buraya girin


XCode 8'i yeni bir kaynakla tekrar açmayı deneyin (daha önce yaptığınız değişiklikleri saklayın). Şimdi, film şeridini açtığınızda, tüm kullanıcı arayüzü öğelerinizi vurgulayın ve "Çerçeveleri Güncelle" yi tıklayın. Bu, sorununuzu çözebilir.
d1str0

6
Bugreport.apple.com adresinde bir hata bildirebilir ve bunun gerçekleştiği film şeridini ekleyebilir misiniz? Bunu daha ayrıntılı analiz etmek istiyoruz.
Quinn Taylor

1
Bende de aynı sorun var. Film şeridimi Xcode8'de açtıktan ve "Bir başlangıç ​​cihaz görünümü seçin" İletişim Kutusunu kabul ettikten sonra, her şey garip görünüyor. Tüm çerçeveleri güncellediğimde, IB iyi görünüyor, ancak oluşturulduktan sonra uygulama tamamen bozuldu. 4 uygulama ile test etti.
Cherrypig

@QuinnTaylor Benzer bir sorun yaşıyorum, Xcode 8 film şeridimi dönüştürdükten sonra UITableViews'taki UIImageViews, anahatları görünür olmasına rağmen herhangi bir içerik göstermiyor Debug View Hierarchy. UICollectionViews'ta bulunan aynı sınıftaki diğer nesneler etkilenen değildir.
Manuel

XIB veya Storyboard, varsayılanı eski sürüm 7.x ve Kaydet ve Kapat olarak ayarladı. Geçici çözüm, ancak işe yarıyor. Kaydet ve Kapat'ı tamamladıktan sonra tekrar açmayın. Aksi takdirde yine baştan aynı adımları izlemeniz gerekir.
Bhavesh Kumbhani

Yanıtlar:


111

Film şeridi dosyasını Xcode8 uyumlu olacak şekilde dönüştürdüğümde görünmeyen tablo görünümleriyle ilgili benzer bir sorun yaşadım. Bu, Xcode8 ile ilgili bir hataya benziyor, bu nedenle bir hata düzeltmesi yayınlanana kadar, işte bir çözüm:

  1. Film şeridinizi Xcode 8'de açın ve bir ilk cihaz görünümü seçin. Normalde yaptığınız gibi değişiklikler yapın.
  2. Değişikliklerinizi tamamladıktan sonra, film şeridi -> Dosya Denetçisi -> Şurada Aç -> 'Xcode 7.x'i seçin.

görüntü açıklamasını buraya girin

  1. Sorulduğunda 'Kaydet ve Kapat'ı seçin
  2. Film şeridi değişiklikleriniz kaydedilecek ve film şeridiniz Xcode8 öncesi olduğu gibi çalışacaktır.

Film şeridi dosyasında başka değişiklikler yapmanız gerektiğinde, bu adımları tekrar izleyin.


Kesinlikle bunun için vay +1. TodayExtension'ımdaki iOS 10'da bununla mücadele ettim. Xcode 8 tarafından film şeridi xml düzenlemelerinin eklendiğinden şüphelenilen storyboard xml düzenlemelerini gördüm. İOS 10 için Xcode 8. Teşekkürler.
John Erck

Kesinlikle bir böcek gibi görünüyor. Xcode 7.x'te Açık Olarak Kaydetmek benim için geçici bir çözüm olarak çalıştı.
Steve

Bu yazıyı bulana kadar tüm bozuk düzeni Xcode8'de bir yerden bir yere düzeltmek için son 3 gününü harcadım. Muhtemelen sizin gibi insanlara Apple'dan daha çok güvenmeliyim. Bunun zamanımı bu kadar boşa harcadığına inanamıyorum. Bunun için çok teşekkür ederim David!
Xu Yin

@XuYin Bunu her storyboard için yapmalı mıyız? Yani projemde başka bir storyboard'um varsa ne olur? Xib dosyaları ne olacak? onlar için de yapmalı mıyım?
Honey

@Honey bunu storyboard'da yapmadım, ancak sorun yaşadığım her xib dosyasında yaptım. ancak tuhaf bir düzen sorunu görürseniz, storyboard'da da denemek isteyebileceğinizi düşünüyorum. çünkü bu düzeltme yalnızca 5 saniye kadar sürecek. ve uygulamayı yeniden oluşturduktan sonra, düzeltmeyi çok hızlı bir şekilde görebilmeniz gerekir.
Xu Yin

14

XIB veya Storyboard, varsayılanı eski sürüm 7.x ve Kaydet ve Kapat olarak ayarladı. Geçici çözüm, ancak işe yarıyor. Kaydet ve Kapat'ı tamamladıktan sonra tekrar açmayın. Aksi takdirde yine baştan aynı adımları izlemeniz gerekir.görüntü açıklamasını buraya girin


6
Bu yardımcı olmuyor çünkü dosya üzerinde çalışmam gerekiyor. Bütün bunlar geriye dönük uyumluluk için dosyayı kaydetmektir.
Xib'in

Bunu yapıyorum ama yine de açılır
listeden

8

Eh aynı sorun. Kısmen aşağıdaki şekilde düzeltmeyi başardım ( Xcode Sürüm 8.1 (8B62) için )

Storyboard'un belge taslağında, bazı düzen sorunlarını gösteren sarı ok bulunan her sahneye tıkladım (ekran görüntüsünde 1 numara)

Bundan sonra, her sorunlu sahne için, sahne başına tüm düzen sorunlarını düzelten "Çerçeveleri Güncelle" küçük simgesine (ekran görüntüsünde 2 numara) tıklamak zorunda kaldım.

görüntü açıklamasını buraya girin

Ancak benim durumumdaki bir sahne, Xcode7'den Xcode8'e geçişten sonra hala ağlama durumundaydı. Kısıtlamaları ayarlayarak veya eksik kısıtlamaları ekleyerek manuel olarak düzeltmek zorunda kaldım.

Phew, XCode8 ve Storyboard'lar için hoş bir sürpriz değil. AppCode editörü kullandıysanız, Storyboard'ları desteklemediği için böyle bir problem yaşamazsınız; P

İyi şanslar!



6

Lütfen olası bir çözüm için konuları takip edin: (Bunun birçok geliştiricinin başına geldiğine inanıyorum).
Xcode 8 GM seed Storyboard sorunu
Xcode 8 - Önceki storyboardlar bozulur

(I anyH anyH everyW width 600) Xcode Xcode 8'e güncellendiğinde tüm ViewControllers boyutumu değiştirdi. Sonuç olarak tüm düzen bozuldu.
Şu anda sorun için yalnızca 3 çözüm görüyorum (yakında düzeltmeyi beklemeye güvenmem).

1. Her Viewcontroller için gidin ve onu düzeltin Update Frames.

2. Ana ViewController'a gidin Size Inspector -> Freeform -> 600, çünkü kontrol cihazlarının çoğunun boyutu değişecektir. (Apple'ın tanıtmak istediğim yeni Özelliklerin etkisine dikkat edin).

3. Film şeridi için git'teki değişiklikleri atın (Apple ayrıca Xcode için önemli olabilecek bazı güncellemeler eklediğinden bunu önermem).

Xcode 8'deki (WWDC16) yeni Otomatik Yerleşim özellikleri için ek bağlantı: Uygulamaları Uyarlamalı Hale Getirme , Bölüm 1


1
Seçenek 1 en mantıklı olanı ve benim için işe yaradı. Mike.R'nin belirttiği gibi, yolda daha fazla sorun çıkması kaçınılmaz olduğundan, XCode'u işleri düzeltmek için 'kandırmaya' çalışırken dikkatli olun.
arcady bob

Ben de 1. seçeneği kullandım (daha güvenli olduğunu düşünüyorum). Ama zaman alıcı.
Mike.R

5

Benim durumumda, Akhil Kateja tarafından önerilen çalışma çözümleri ve ayrıca ana görünümün Genişlik ve Yüksekliğini de sıfırlamam gerekiyor:

1) Görünüm Boyutunu Serbest Biçime Ayarlayın

görüntü açıklamasını buraya girin

2) Görünümün Genişliğini ve Yüksekliğini orijinal boyutuna sıfırlayın:

görüntü açıklamasını buraya girin

Sonunda kaydedin ve bitirdiniz.


4

Benim için çözüm, sorun yaşayan UIViewController'a tıklamak ve ardından Editor > Resolve Auto Layout Issues > All Views In ... > Updates Frames

Görünümleri, yeni seçilen varsayılan görünüme (benim durumumda iPhone 7) göre mevcut kısıtlamalara uyacak şekilde yeniden düzenledi.

Ayrıca not: Benim yaptığım gibi bir Gezinme Çubuğu Yanlış Yerleştirilmiş Görünüm uyarısı alırsanız, sadece UINavigationController / UIViewController'ı seçin ve ardından Attributes Inspector > Bar Visibility > Shows Navigation Bar- KAPALI ve sonra tekrar AÇIK duruma getirin.


3

Görünüm Boyutunu Serbest Biçime Ayarlama den anlaşılmaktadır benim için çalıştı. Bu başlığı altında bulunabilir Simüle Metrik içinde Nitelikler Müfettiş .


3

Aynı sorunu yaşadım ve denetleyicinin görüş kısıtlamalarını zorla güncelleyerek çözdüm. Aşağıdaki kodu viewDidLoad () işlevinize yerleştirin

self.view.layoutIfNeeded()

1
Şerefe Bill! bu 'layoutIfNeeded' benim için çalıştı! (Her şeyi saatlerce denedikten sonra ..)
Ethan Halprin

3

Her bir denetleyiciyi seçtim ve "Çerçeveleri Güncelle" ye tıkladım ve düzeni düzelttim.


3

@ David-truong'un ( https://stackoverflow.com/a/39589860/1407528 ) cevabı benim durumumda çalışmıyor, bu yüzden aynı durumdaysanız şunu deneyin:

Tüm cihazlarınızın iOS 10+ sürümüne güncellenmesi durumunda, Xcode'un bu sürümü bu cihazları uyumlu cihazlar olarak tanımayacaktır. Öyleyse, şu numarayı deneyin:

  • Şu adrese gidin: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
  • İOS 10 veya 10.1 ile ilgili klasörleri şuraya kopyalayın: / Applications / Xcode 7.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
  • Projeyi Xcode 7.3.1 ile açın (zaten açmışsanız Xcode'u yeniden başlatın)
  • Bağlı iOS 10+ cihazınızı seçin
  • İtme Çalıştır

Not: Swift gibi yeni özellikler bu numarayı kullanarak kullanılamayacak, ancak projenizi yükleyip oluşturabilmelisiniz.


3

Umarım bu yardımcı olur

Xcode'u 7.3'ten Xcode 8'e güncellediğimde ve uygulamayı çalıştırdığımda bazı görünümler mükemmel bir şekilde görüntüleniyor ancak bazıları bozuk. Daha sonra, uç dosyasını kontrol ettim ve belirli bir cihaz boyutunu seçmemi istedi ve buna göre ucu göstermemi istedi. tabi olmayan cihaz boyutu Any-Any(Xcode 7.3) . Yani tüm uçlar dosyası doğru bir şekilde görüntülenmiyor.

Çözüm çalışması benden: - aşağıdaki resimde gösterildiği gibi sarı oka basın

görüntü açıklamasını buraya girin

aşağıdaki gibi seçenekleri gösteren bir açılır pencere açar:

görüntü açıklamasını buraya girin

seçim Update Framesile Apply to all views in containerchecked.it çarpık UI% 90 civarında çözülmüş olacaktır ve problem elle çözülebilir otomatik düzen kısıtlamalar bekletin.


Bu, Düzenleri de bozabilir. IMHO bunun çok dikkatli bir şekilde, her seferinde bir bakışla yapılması ve devam etmeden önce işlerin yolunda gidip gitmediğini kontrol etmesi gerekir.
brainray

evet, tabii ki bunun için biraz zaman harcamalısınız ve bu çözüm, kullanıcı arayüzünün bir kısmını güncellemek istediğinizde olduğu gibi daha uzun vadede size yardımcı olabilir.
Anurag Bhakuni


1

Benzer bir sorunu çözmek için, xib'i Serbest Biçim (Çıkarılmamış) olarak yapılandırdım VE xib dosyasını Xcode 7.x uyumlu olarak kaydettim. Benim durumumda her iki adım da gerekliydi. Umarım bu yardımcı olur!


1

Xcode 8.2'de yeni bir düğme fark ettim (resimdeki turuncu daireyi kontrol edin). Sana biraz yardım edecek.

Adımlar: 1. Film şeridini açın ve istediğiniz herhangi bir cihazı seçin 2. Sadece Görünüm Denetleyicisini seçin 3. Belirtilen düğmeyi tıklayın (Resimdeki gibi) 4. Bu görünüm denetleyicisinin çerçevesini günceller ve onunla devam edebilirsiniz.

Bundan daha iyi bir çözüm bulamadım. Lütfen bir tane bulursanız cevaplayın.

IB ekran görüntüsü


Hiçbir şey olmadı.
Muju

0

viewdidload'daki kısıtlamaları ve düzen alt görünümlerini güncelle sorunu çözer

- (void) viewDidLoad {
        [self.view updateConstraints];
        [self.view layoutSubviews];
        [super viewDidLoad];
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.