Tidak dapat mengubah ukuran UIView di IB

88

Mungkin sesuatu yang sederhana, tetapi saya tidak mengerti mengapa saya tidak dapat mengubah ukuran UIView di xib di Interface Builder.

Saya membuat tampilan baru XIB di xcode dan di inspektur ukuran, lebar dan tinggi dinonaktifkan dan berwarna abu-abu menjadi 320 x 460. Ini aneh karena saya dapat mengubah ukuran untuk dua tampilan lainnya (terkait dengan dua bilah tab lainnya item).

Saya tidak yakin apakah ini ada hubungannya dengan tetapi saya baru saja memperbarui sdk ke 3.

Terima kasih!


sumber

Jawaban:

81

Saya pikir Anda tidak dapat mengedit ukuran saat mensimulasikan elemen antarmuka pengguna apa pun seperti bilah status di Interface Builder. Anda dapat mencoba mematikan elemen simulasi jika ada yang diaktifkan. Tidak begitu yakin mengapa ini terjadi, jadi kami akan menghargai umpan balik dari siapa pun yang tahu persis mengapa ini terjadi - pasti ada alasan yang bagus.

teh celup
sumber
1
Terima kasih, benar. Setelah saya meningkatkan xcode dan IB, bilah status aktif secara default. Yang lain tidak melakukannya.
1
Seperti di Xcode 4.2, iOS 5.0.1 ini telah berubah. Jawaban saya di bawah menjelaskan bagaimana ini bisa dicapai.
lol
1
Sangat membantu. Matikan saja bilah status, sesuaikan ukurannya, lalu nyalakan kembali bilah status.
Wollan
9
Setelan ini berfungsi untuk ViewController.xib di Xcode 4.3.3: "Metrik yang disimulasikan - Ukuran: bentuk bebas". Setelah itu, pengaturan ukuran tampilan diaktifkan. Hapus juga opsi skala "Mode tampilan" untuk mengisi (tepat di bawah metrik yang disimulasikan).
defvol
uuuugh Saya sangat tidak suka IDE ini
Saik Caskey
80

Untuk mencapai itu di XCode 4.6.3 / 5.0.2 Anda perlu mengikuti tangkapan layar di bawah ini:

  1. Di bawah 'File Inspector' -> hapus centang Use Auto Layout
  2. Klik pada Attributes Selector & Pilih FreeformUkuran

Ini diperlukan saat membuat headerView untuk tableView

masukkan deskripsi gambar di sini

Houman
sumber
40

Bagian yang Anda cari ada di panel Inspektur pertama (Command-1). Tepat di atas ada bagian yang berlabel Elemen Antarmuka Pengguna Simulasi. Secara default, Status Bar aktif. Anda perlu memastikan ketiganya disetel ke Tidak Ada.

Thomas Mon
sumber
2
Terima kasih, jawaban ini baru saja menghemat banyak waktu saya! Ada yang tahu kenapa IB melakukan ini?
Gregor
Terima kasih sobat. Saya sudah mencari yang satu itu.
natanavra
Catatan untuk semua, ini sekarang: "Tidak ditentukan", bukan tidak ada. (Saya memiliki versi 3.2.3)
IcyBlueRose
Saya mengonfirmasi untuk iPad "Tidak ditentukan", terima kasih Thomas Mon, Anda menghemat beberapa jam: D
Qlimax
Saya hanya melihat ini untuk View Controllers, bukan tampilan
BigBoy1337
26

Seperti di Xcode 4.2, iOS 5.0.1, metrik simulasi default mencakup simulasi atribut 'size' dari UIViewControllers ke 'Inferred'

Jika Anda mengubah atribut ini menjadi 'Bentuk Bebas' maka Anda dapat mengubah ukuran UIView yang terdapat dalam UIViewController sambil juga mensimulasikan bilah status (atau simulasi lainnya)

lol
sumber
1
Atribut ukuran sekarang default ke "Retina 4 Layar penuh", tetapi mengubahnya menjadi "Bentuk bebas" tetap berfungsi.
Pier-Luc Gendreau
4

Pergi saja ke inspektur, pergi ke panel pertama (atau tekan command-1) dan kemudian ubah field bertanda Status Bar, Top Bar, dan Bottom Bar menjadi None di bawah bagian yang disebut "Simulated User Interface Elements". Anda mungkin perlu mengklik segitiga kecil untuk membuatnya terlihat.


sumber
1

Lucu saya punya masalah yang sama. Saya telah menghapus semua tampilan dari file xib dan menambahkan kembali tampilan. Setel bilah status menjadi "tidak ditentukan" sehingga bilah status tidak diakomodasi. Tampilan, ketika ditambahkan, dibuat dengan x = 0, y = 0, w = 320 h = 460, bukan (0,0,320,480) seperti yang saya harapkan. Setelah mengubah tinggi menjadi 480 dan menghubungkannya ke pemilik file dan mengubah warna untuk membuatnya berbeda dalam kaitannya dengan latar belakang. Saya yakin bahwa ada pita putih di antara bagian atas layar dan tampilan. Saya menambah kode saya dengan:

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

dalam viewDidLoad

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

Ternyata view tersebut dimuat dari IB sebenarnya (0, 20, 320, 480) Sebagai solusi, saya mengatur ulang bingkai tampilan dengan self.view.frame = CGRectMake (0, 0, 320, 480);

Saya menggunakan IB 3.2.5

Saya ingin mengetahui sedikit perbaikan untuk yang satu ini.

cramhead
sumber
3
FYI, Anda dapat menggunakan NSStringFromCGRect (rect) untuk mendapatkan string yang dapat dicetak yang mewakili CGRect.
Berry
Itu FYI yang bagus, saya memeriksanya, dan Anda benar-benar bisa mendapatkan nilai string dari CGPoint dan CGSize juga! sangat masak, terima kasih.
FierceMonkey
1

Saya perhatikan bahwa UIView yang dibuat secara otomatis saat membuat file xib tidak dapat diubah ukurannya dari panel ukuran atau pegangan tepi.

Yang saya lakukan hanyalah menambahkan UIView lain dan menyeret semuanya dari UIView lama saya ke yang baru lalu menghapus yang lama.

Ini memecahkan masalah bagi saya, tetapi ya, saya pikir ada masalah mendasar dengan pembuat antarmuka yang harus diselesaikan Apple (seseorang mengoreksi saya jika saya salah).

Saya Menggunakan XCode 4 pembuat Antarmuka terintegrasi.

PowerAktar
sumber
0

Saya memilahnya dengan cara yang berbeda ...

buka xib Anda dengan editor teks favorit Anda dan edit baris ini

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

CompassViewController adalah nama kelas yang Anda coba tautkan dengan nib / xib Anda.

Cukup edit nama kelas Anda dengan nama kelas yang benar dan Anda selesai;)

jeet.chanchawat
sumber
0

masukkan deskripsi gambar di siniDi storyboard, pilih UIVIew dan buka atribut inspektur, ubah ukuran UIVIew menjadi "FreeForm", bukan "Inferred"

Jane.Abraham
sumber