Autolayout: Tambahkan batasan ke superview dan bukan Panduan Tata Letak Teratas?

112

Saya memiliki UIView di UIViewController saya di storyboard yang ingin saya tambahkan batasan ke ruang yang melihat jarak dari tepi atas.

Sekarang, ketika saya melakukan hal biasa dengan ctrl + drag ke tampilan utama ViewController, saya hanya mendapatkan opsi untuk mengaturnya ke panduan tata letak atas.

Ini adalah masalah bagi saya karena pada satu titik di aplikasi, saya akan memindahkan tampilan utama ke atas sekitar 20-50px dan yang terjadi kemudian adalah tampilan yang saya miliki tidak akan bergerak ... karena tidak selaras dengan superview.

Bagaimana saya bisa melakukan ini secara manual di storyboard atau haruskah saya menambahkannya secara terprogram?

Saya menggunakan xcode 6.

Arbitur
sumber
Dapatkah Anda menyeret dan melepas ke entitas yang benar dalam kerangka dokumen di sebelah kiri? - Objek pemandangan di tangkapan layar ini: ptgmedia.pearsoncmg.com/images/chap5_9780672335761/elementLinks/…
Woodstock
Saya sudah mencobanya juga, hasil yang sama
Arbitur

Jawaban:

306

Ada panah di sebelah kanan nilai konstanta batasan. Jika Anda mengkliknya, sebuah menu akan muncul di mana Anda dapat memilih apa yang ingin Anda buat batasannya terkait. Jika Anda memilih 'View', maka akan disematkan ke bagian atas tampilan.

masukkan deskripsi gambar di sini

Pavel Gurov
sumber
6
Haleluya! Saya tidak tahu apa yang akan saya lakukan ketika mereka menghapus menu Editor -> Pin.
Jeremy Hicks
4
tidak percaya saya tidak melihat itu sebelumnya. Mengagumkan.
zumzum
9
Hanya catatan untuk orang-orang yang tidak mengerti seperti saya -> Anda mungkin tidak dapat melakukan perubahan ini kecuali tampilan yang Anda tambahkan batasannya ada di bawah panduan tata letak atas. Saya memiliki tampilan di atas panduan tata letak atas dan "Panduan Tata Letak Atas" bukanlah opsi di menu tarik-turun. Yang mungkin merupakan pernyataan "duh" untuk non-newbs seperti saya :)
Ryan James
2
Ini tentang seluk-beluk Xcode kecil itu. Itu begitu banyak. :)
Marchy
Hanya klarifikasi singkat yang membingungkan saya: meskipun gambar memiliki Panduan Tata Letak Atas yang dicentang, jika Anda ingin menyematkan tampilan ke ATAS tampilan seperti bagian paling atas perangkat, pilih "Tampilan".
micnguyen
57

Anda harus dapat melakukannya dengan menyorot tampilan yang Anda inginkan di storyboard, lalu memilih Editor > Pin > Top Space to Superviewdi menu atas.


Ini sudah usang di XCode 7, lihat jawaban @PaulGurov sebagai gantinya.

dan
sumber
Bekerja seperti pesona
XCode
4
Mereka telah menghapus 'pin' dari menu editor di Xcode 7. Adakah solusi baru?
Kyle G
14

TL; DR: Anda dapat membatasi margin dengan menekan Alttombol pada keyboard.


Anda juga dapat menambahkan bahwa jika tampilan yang Anda coba pasangi bukan subview langsung dari tampilan yang ingin Anda sematkan, pendekatan yang disarankan tidak benar-benar valid. Katakanlah hierarki tampilan terlihat seperti itu dan Anda ingin menyematkan tampilan gambar ( Parallax Image Viewdalam kasus ini) ke tampilan pengontrol tampilan ( Viewdalam kasus ini).

masukkan deskripsi gambar di sini

Untuk melakukan itu, Anda hanya Control+ Dragdari Parallax Image Viewke View. Itu menyajikan pilihan default tempat Anda dapat melihat Vertical Spacing to Top Layout Guideuntuk menyematkan Parallax Image Viewke panduan tata letak atas.

masukkan deskripsi gambar di sini

Yang Anda inginkan adalah menyematkannya ke atas (margin) tampilan. Untuk melakukan itu, Anda harus beralih ke rangkaian pembatas lainnya dengan menekanAlt

masukkan deskripsi gambar di sini

Zhivko Bogdanov
sumber
Tip yang sangat berguna. Ini sebenarnya memecahkan masalah saya.
Machado
Ini berfungsi untuk saya, tetapi saya tidak tahu cara menambahkan beberapa batasan pada saat yang bersamaan. Sekarang, saya harus menambahkan satu per satu, untuk mengambil waktu.
Duc Nguyen
3

Saya sudah memiliki banyak kendala dan saya hanya ingin mengubahnya daripada menghancurkannya. Ternyata jika Anda double klik pada constraint yang akan diedit, lalu klik pada item yang memiliki ".Margin", Anda bisa mematikan "Relative to Margin" dengan memilih item tersebut.

Pilih relatif terhadap margin

christophercotton
sumber
Inilah yang saya cari ketika saya datang ke sini! Terima kasih
netigger
1

Jawaban Dan berhasil. Saya hanya ingin menyatakan bahwa jika Anda menyetel tampilan di storyBoard pada y <20, dan mengonfigurasi batasan melalui panel pin, itu akan disetel ke atas ke superview:

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

oren
sumber
0

Jika ketinggian tampilan disetel ke 0 secara tidak sengaja, Panduan Tata Letak Ruang Vertikal ke Atas TIDAK akan muncul. Namun, Vertical Space to Bottom Layout Guide akan muncul, yang pasti masuk akal bagi seseorang di dalam Apple sekitar tahun 2004.

Gabriel Jensen
sumber
0

Tidak ada jawaban di atas yang berhasil untuk saya, sebagai gantinya saya harus melakukan peretasan untuk mengatur bagian atas subview saya dengan bagian atas superview sebagai gantinya dengan panduan tata letak Top.

  • Pertama, setel subview center secara vertikal dengan superview.
  • Kemudian, ubah batasan Pusat Y untuk subview serta superview menjadi Batasan teratas .

Anda baik untuk pergi sekarang.

Jas_meet
sumber