IB'de UIView yeniden boyutlandırılamıyor


88

Muhtemelen basit bir şey, ancak Arabirim Oluşturucu'da bir xib'de bir UIView'ı neden yeniden boyutlandıramadığımı anlayamıyorum.

Xcode'da ve boyut denetçisinde yeni bir XIB görünümü oluşturdum, genişlik ve yükseklik devre dışı bırakıldı ve 320'ye 460 olarak grileşti. Diğer iki görünümün boyutunu değiştirebildiğim için (diğer iki sekme çubuğu ile ilişkili) bu garip öğeler).

Bunun bir ilgisi olup olmadığından emin değilim ama yakın zamanda sdk'yi 3 olarak güncelledim.

Teşekkürler!

Yanıtlar:


81

Interface Builder'daki durum çubuğu gibi herhangi bir kullanıcı arayüzü elemanını simüle ederken boyutu düzenleyemeyeceğinizi düşünüyorum. Etkinleştirilmişse simüle edilmiş öğeleri kapatmayı deneyebilirsiniz. Bunun neden olduğundan tam olarak emin değilim, tam olarak bunun neden olduğunu bilen herhangi birinin geri bildirimini takdir edersiniz - iyi bir nedeni olmalı.


1
Teşekkürler bu doğru. Xcode ve IB'yi yükselttikten sonra durum çubuğu varsayılan olarak açıktı. Diğerleri kapalıdır.

1
Xcode 4.2, iOS 5.0.1'de olduğu gibi bu değişti. Aşağıdaki cevabım bunun nasıl başarılabileceğini açıklıyor.
lol

1
Çok yararlı. Sadece durum çubuğunu kapatın, boyutu ayarlayın ve ardından durum çubuğunu tekrar açın.
Wollan

9
Bu ayar, Xcode 4.3.3'te ViewController.xib için çalıştı: "Simüle edilmiş ölçümler - Boyut: serbest biçim". Bundan sonra, görünüm boyutu ayarı etkinleştirilir. Ayrıca "Görünüm modu" doldurmak için ölçek seçeneğini kaldırın (simüle edilen metriklerin hemen altında).
defvol

uuuugh Gerçekten bu IDE sevmediğim
Saik Caskey

80

Bunu XCode 4.6.3 / 5.0.2'de elde etmek için aşağıdaki ekran görüntüsünü izlemeniz gerekir:

  1. 'Dosya Denetçisi' altında -> işareti kaldırın Use Auto Layout
  2. Özellik Seçiciye tıklayın ve FreeformBoyut için Seçin

Bir tableView için bir headerView oluştururken bu gereklidir

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


40

Aradığınız parça ilk Müfettiş panelindedir (Komut-1). Sağ üstte Simüle Edilmiş Kullanıcı Arayüzü Öğeleri etiketli bir bölüm var. Varsayılan olarak Durum Çubuğu açıktır. Üçünün de Yok olarak ayarlandığından emin olmanız gerekir.


2
Teşekkürler, bu cevaplar bana çok zaman kazandırdı! IB'nin bunu neden yaptığını bilen var mı?
Gregor

Teşekkürler dostum. Ben onu arıyordum.
natanavra

Hepsine dikkat edin, bu artık: Hiçbiri yerine "Belirtilmemiş". (3.2.3 sürümüne
sahibim


Bunu yalnızca Görünüm Denetleyicileri için görüyorum, görünümler için değil
BigBoy1337

26

Xcode 4.2, iOS 5.0.1'de olduğu gibi, varsayılan simülasyon ölçümleri, UIViewControllers'ın "boyut" özniteliğinin "Çıkarılmış" olarak simüle edilmesini içerir.

Bu özniteliği 'Serbest Biçim' olarak değiştirirseniz, UIViewController'de bulunan UIView'ı yeniden boyutlandırabilir ve aynı zamanda durum çubuğunu (veya bu konudaki diğer simülasyonları) simüle edebilirsiniz.


1
Boyut özelliği artık varsayılan olarak "Retina 4 Tam ekran" olarak ayarlanmıştır, ancak "Serbest Biçim" olarak değiştirilmeye devam edilir.
Pier-Luc Gendreau

4

Denetçiye gidin, ilk panele gidin (veya komut-1'e basın) ve ardından Durum Çubuğu, Üst Çubuk ve Alt Çubuk olarak işaretlenen alanları "Simüle Edilmiş Kullanıcı Arayüzü Öğeleri" adlı bölüm altında Yok olarak değiştirin. Onları görünür kılmak için küçük üçgeni tıklamanız gerekebilir.


1

Komik, benzer bir sorunum var. Tüm görünümleri xib dosyasından kaldırdım ve bir görünümü yeniden ekledim. Durum çubuğunun barındırılmaması için durum çubuğunu "belirtilmemiş" olarak ayarlayın. Görünüm eklendiğinde, beklediğim gibi (0,0,320,480) yerine x = 0, y = 0, w = 320 h = 460 ile oluşturulur. Yüksekliği 480 olarak değiştirdikten ve dosyanın sahibine bağladıktan ve rengi arka plana göre farklı kılmak için değiştirdikten sonra. Ekranın üstü ile manzara arasında beyaz bir bant olduğunu anladım. Kodumu şu şekilde genişlettim:

#define RECTLOG (rect) (NSLog (@ "" #rect @ "x:% fy:% fw:% fh:% f", rect.origin.x, rect.origin.y, rect.size.width, rect .size.height));

viewDidLoad içinde

- (void) viewDidLoad {
    [super viewDidLoad];
    RECTLOG (self.view.frame);
}

Görünüşün IB'den yüklendiği haliyle olduğu ortaya çıkıyor (0, 20, 320, 480) Bir çözüm olarak, görünümün çerçevesini self.view.frame = CGRectMake (0, 0, 320, 480) ile sıfırladım;

IB 3.2.5 kullanıyorum

Bunun için küçük bir düzeltme bilmek isterim.


3
Bilginize, bir CGRect'i temsil eden yazdırılabilir bir dize elde etmek için NSStringFromCGRect (rect) kullanabilirsiniz.
Berry

Bu harika bir bilgiydi, kontrol ettim ve aslında bir CGPoint ve CGSize'den bir dize değeri de alabilirsiniz! çok aşçı, teşekkürler.
FierceMonkey

1

Xib dosyası oluşturulurken otomatik olarak oluşturulan UIView’ün boyutlandırma panelinden veya kenar tutamaçlarından yeniden boyutlandırılamayacağını fark ettim.

Tek yaptığım başka bir UIView eklemek ve her şeyi eski UIView'umdan yenisine sürükledikten sonra eskisini silmekti.

Benim için sorunu çözdü ama evet, Apple'ın çözmesi gereken arayüz oluşturucunun altında yatan bir sorun olduğunu düşünüyorum (yanılıyorsam birisi beni düzeltir).

XCode 4 entegre Arabirim oluşturucuyu kullanıyorum.


0

Bunu farklı bir şekilde çözdüm ...

xib'inizi favori metin düzenleyicinizle açın ve bu satırı düzenleyin

        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="CompassViewController">

CompassViewController uç / xib'inizi bağlamaya çalıştığınız sınıfınızın adıdır.

Sadece sınıf adınızı doğru sınıf adıyla düzenleyin ve bitirdiniz;)


0

görüntü açıklamasını buraya girinFilm şeridinde UIVIew'i seçin ve nitelik denetçisine gidin, UIVIew boyutunu "Çıkarılan" yerine "FreeForm" olarak değiştirin

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.