Xcode 6 Storyboard yanlış boyutta mı?


139

Swift'te Xcode 6'da (Beta 1) sıfırdan yeni bir proje inşa ettim ve Storyboard'lar ve görüntülemekte olduğum çıktı ile garip bir davranış gördüm.

Basit bir arayüz oluşturdum (aşağıda gösterildiği gibi) - View Controller'ın özellikleri dahil. Bunu simülatörde çalıştırdığımda 'Merhaba, Dünya' nın kullanıcı arayüzünde merkezi olmasını beklerdim - ancak bu 'Kare' sadece iPhone ekranına sığıyor gibi görünüyor ve bu nedenle yanlış görünüm gösteriliyor (aşağıya bakın) ).

Sorum şu: başka kimse bu davranışı gördü ve nasıl düzelttiler?

Teşekkürler!

Öykü Panosu Düzenleyicisinden Görünüm

Öznitelik Müfettişi

Boyut Müfettişi

Simülatör Çıkışı


düzeltmesi gereken otomatik düzen kısıtlamaları ekleyin. şu anda tüm düzenler için tasarlıyorsunuz, bu nedenle otomatik düzenler içeriği "doğru" yerde görüntülemenize yardımcı olacaktır.
Raz

8
İpuçları: Yardımcı editör> otomatik> Önizleme'yi kullanarak, tüm ekran boyutlarıyla ekranın bir önizlemesini görebilirsiniz
Francescu

Yanıtlar:


81

Asif Bilal'in cevabı, Boyut Sınıfları içermeyen daha basit bir çözüm olsa da (iOS 8'de tanıtıldı), gelecekteki sınıfları boyutlandırmaya alışmanız şiddetle tavsiye edilir ve sonunda yine de bazılarına atlarsınız. nokta."


Muhtemelen mizanpaj kısıtlamalarını eklemediniz.

Etiketinizi seçin, alttaki düzen kısıtlamaları düğmesine dokunun:

resim açıklamasını buraya girin

Bu menüde, onay kutularını işaretleyerek genişlik ve yükseklik ekleyin (benimkiyle aynı OLMAMALIDIR) ve kısıtlama ekle'yi tıklayın. Ardından, etiketinizi ana görünümünüze Control tuşuna basarak sürükleyin ve ardından tıklattığınızda kapta yatay ve dikey olarak ortalama seçeneklerine sahip olmanız gerekir. Her ikisini de ekleyin ve ayarlamanız gerekir.


1
Mükemmel - bu benim için harika çalıştı - Yardımın için teşekkür ederim (zamanlayıcı kaldırıldığında cevabını kabul edecek)
Candyfloss

1
Rica ederim. Bu, şimdi varsayılan olarak etkin olan otomatik yerleşimli varsayılan davranıştır. Unutmayın, olası farklı ekran boyutları / düzenleri nedeniyle, görünümün üst öğeye göre nerede konumlandırılacağını hesaplamanın bir yolu olmalı ve otomatik yerleşim bu sorunu çözer. bu kısıtlamaları eklemediğinizde, görünüm bunları çalışma zamanında otomatik olarak oluşturur, ancak sol üst köşeye göre oluşturur. Bundan başka bir şeye ihtiyacınız varsa (neredeyse her zaman başka bir şeye ihtiyacınız vardır), kısıtlamaları açıkça belirtmeniz gerekir.
Can Poyrazoğlu

4
Kontrol sürüklemesinin (garip olabilir) gerekli olmadığını unutmayın. Bu resimde seçilenin solundaki düğme, yatay ve dikey merkezleri sabitlemenizi sağlayan bir menü açar.
jrturton

Haklısın .. Sadece kontrol-sürüklemeye alışkınım, bu yüzden böyle söyledim.
Can Poyrazoğlu

@ CanPoyrazoğlu - "Etiketinizi seçin." Hangi etiket? Aynı sorunu, etiket veya başka kullanıcı arayüzü öğeleri olmayan yeni bir iPhone projesinde de aldım. Xcode 6'daki ilk projem, Objective C kullanarak
rattletrap99

253

Sorunu çözmek için aşağıdaki adımları uygulayın

Storyboard'da herhangi bir görünümü seçin, ardından Dosya denetçisine gidin. "Boyut Sınıflarını Kullan" seçeneğinin işaretini kaldırın, iPhone / iPad için boyut sınıfı verilerini saklamanızı isteyeceksiniz. Ve sonra "Boyut Sınıflarını Devre Dışı Bırak" düğmesine tıklayın. Bunu yapmak, film şeridinin görünüm boyutunu seçilen cihazla yapar.


8
Örneğin standart bir iPhone boyutlu görünüm denetleyicisi istediğinizde 600x600 görünüm denetleyicisi alıyorsanız, bu doğru yanıttır.
Fraggle

5
Bu doğru cevap olmalıdır (en azından sadece Universal olmayan platformda çalışanlar için)
Raptor

36
İnsanların bunu neden doğru cevap olarak işaretlediklerini bilmiyorum ... birincisi, yapılması gereken yoldur ... Tersine gitmektense düzen kısıtlamalarını sevmiyorsanız ... Apple kaldıraç kullanıyor iPhone ve iPad'lerin her boyutu için iyi bir geliştirme yöntemi ve eski şeylere geri dönmek mi istiyorsunuz? Kendinizi güncellemeyi göze alamayacağınız için mi? Asla oy kullanmadı, ancak bu cevap insanları karıştırıyor ve daha sonra yeni şeyleri kullanmaya teşvik etmek yerine eski yaklaşımını (kullanımdan kaldırılacak) kullanıyor gibi görünüyor ...
Raphael Ayres

3
İPhone / iPad storyboard'larına
alışmış

3
Düzen kısıtlamalarını kullanın ... Apple bunu Android'in yaptığı gibi yapıyor. Görünümün bir formu yok ... Bazen bir acı olabilir, ancak boyutu zorlarsanız Uygulamanız farklı cihaz boyutlarında kötü görünecektir. Bir düğmenin sağ alt köşede görünmesini istiyorsanız, bunun için 2 kısıtlama oluşturun ve X veya Y seçimini yasaklayın. Tümü Motor tarafından belirlenecektir. İç boyutlar kullanın. Hayal gücünü kullan. İlişkisel kısıtlamaları kullanın. Bunu öğrenin ***.
Raphael Ayres

18

Xcode 6 kullanıyorsanız ve iOS 8 için tasarım yapıyorsanız, bu çözümlerin hiçbiri doğru değildir. Yalnızca iPhone görünümlerinizin doğru şekilde boyutlandırılmasını sağlamak için boyut sınıflarını kapatmayın, çıkarılan metrikleri kapatmayın ve kısıtlamalar (henüz) ayarlamayın. Bunun yerine, başlangıçta "wAny hAny" yazan Arayüz Oluşturucu'nun alt kısmında, kaçırılması kolay bir metin düğmesi olan boyut sınıfı kontrolünü kullanın.

Düğmeye tıklayın ve Kompakt Genişlik, Normal Yükseklik'i seçin. Bu, görünümlerinizi yeniden boyutlandırır ve tüm iPhone dikey yönlerini kapsar. Apple'ın belgeleri burada: https://developer.apple.com/library/ios/recipes/xcode_help-IB_adaptive_sizes/chapters/SelectingASizeClass.html veya "Arayüz Oluşturucu'da Boyut Sınıfı Seçme"


Bağlantınızdaki tüm Boyut Sınıfları Tasarım Yardımı'nı okumanın yararlı olduğunu hissediyorum , yani Birden Fazla Boyut Sınıfları için Tasarım Hakkında Daha eski iOS Sürümlerinde Boyut Sınıflarına Sahip Bir Uygulama Dağıtmaya kadar .
Franklin Yu

Otomatik düzeni korumak, ancak film şeridi görünümlerinin kare yerine manzara veya portre olarak görünmesini istiyorsanız, bu harika bir çözümdür.
stephenspann

5

Storyboard'da ViewController'ınızı seçin ve Atribute Inspector'a gidin. En üstte, Simüle Edilmiş Metrikler altında, Çıkarılmış olarak ayarlanmış Boyut ve Yönlendirme özelliklerine sahipsiniz. Bunları istediğiniz değerlere değiştirin.

Bir uygulamanın başka bir ekran boyutunda düzgün bir şekilde görüntülenmesi için, ilk gönderide Can Poyrazoğlu tarafından açıklanan kısıtlamaları da ayarlamanız gerekir.


5

Bu sorunu xcode 6'da yaşadım ve yeniden boyutlandırma çakışmalarını çözmenin bir yolu var. Görünümünüzü seçerseniz, alt kısımda | -Δ- | şeklinde bir simge görürsünüz. Üzerine tıklarsanız, projeniz farklı cihazlar için yeniden boyutlandırılacaktır.


Evet ve üçgen sembolü seçtikten sonra eksik kısıtlamaları ve patlamayı ekledikten sonra görünüm, evrensel uygulaması varsa cihaz boyutuna göre yeniden boyutlandırılacak
vishal dharankar

3

Özellik Denetçisine gidin (sağ üst köşe) Boyut, Yön, Durum Çubuğu, Üst Çubuk, Alt Çubuk özelliklerine sahip Simüle Metriklerde. SIZE için, Çıkarılmış -> Serbest Biçim'i değiştirin.


+1 @Rachel, Simüle Edilen Metrikler -> Boyut: "Serbest Biçimli" (diğer bir deyişle, görünüşe göre, "özel bir görünümle desteklenen yeniden kullanılabilir bir xib için özel bir boyutu etkinleştirin") için bu yararlı küçük ipucu için teşekkür ederiz.
cweekly

3

Film şeridi sayfanızda Dosya Denetçisi'ne gidin ve 'Boyut Sınıflarını Kullan' seçeneğinin işaretini kaldırın. Bu, görünüm denetleyicinizi aşina olduğunuz normal IPhone boyutuna küçültmelidir. 'Boyut sınıfları' kullanmanın projenizi birçok cihazda tasarlamanıza izin vereceğini unutmayın. Bunun işaretini kaldırdığınızda Xcode size aşağıdaki gibi bir uyarı diyalogu verecektir. Bu kendi kendini açıklamalı olmalıdır.

"Boyut sınıflarını devre dışı bırakmak, bu belgeyi tek bir cihaz ailesi için veri depolamakla sınırlar. Hedeflenen cihazı en iyi temsil eden boyut sınıfına ait veriler korunur ve diğer tüm veriler kaldırılır. Buna ek olarak, sekmeler, -uyumlu eşdeğerler. "


3

XCode 7 kullanan herkes için, belirli bir cihaz boyutu için tasarım yapmak çok kolaydır (varsayılan kare şeklindeki kanvas yerine).

Arayüz Oluşturucu'da, sol menüden ViewController'ınızı veya Sahne'nizi seçin. Ardından altında Show the Attributes Inspector, menüsüne gidin ve açılır menüden Simulated Metricsistediğinizi Sizeseçin.


Bu, yalnızca film şeridinizde bu cihaz için tasarım yapmanıza izin verecektir. Uygulamanızı çalıştırdığınızda, tasarımı farklı ekran boyutları için çok farklı olabilir.
Joey Tawadrous

@JoeyTawadrous Kesinlikle. Ama sorulan soruya cevap veriyor :)
Rahip

2

Önerilen kısıtlamalara (Xcode 6.0.1) eklemek / sıfırlamak için muhtemelen "Otomatik Yerleşim Sorunlarını Çöz" (film şeridi görünümünde sağ alt üçgen simgesi) kullanmalısınız.

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.