Snapkit: Apakah mungkin untuk mendapatkan NSLayoutConstraint saat menggunakan SnapKit?

Dibuat pada 13 Agu 2015  ·  8Komentar  ·  Sumber: SnapKit/SnapKit

Saya tahu saya bisa mendapatkan SnapKit.Constraint dari SnapKit dengan melakukan topConstraint = make.top.equalTo(superview).offset(padding.top).constraint .

Namun, apakah ada cara untuk mendapatkan garis bawah NSLayoutConstraint ? Saya perlu mendapatkan batasan untuk bekerja dengan AMScrollingNavbar .

Misalnya, katakanlah saya punya

let vc = UIViewController()
let container = UIView()
vc.view = UIView(frame: CGRectMake(0, 0, 300, 300))

vc.view.addSubview(container)

container.snp_makeConstraints { (make) -> Void in
    make.top.equalTo(vc.snp_topLayoutGuideBottom) // Hopefully I can get the `NSLayoutConstraint` created by this line
    make.bottom.equalTo(vc.snp_bottomLayoutGuideTop)
}

Apakah mungkin untuk mendapatkan NSLayoutConstraint untuk batasan teratas container di vc ?

PS.
SnapKit luar biasa! Itu membuat hidup saya dengan AutoLayout jauh lebih mudah. ;D
Terima kasih atas kerja bagusnya.

Komentar yang paling membantu

@NicholasTD07 Anda mungkin tidak ingin menyimpan NSLayoutConstraint karena SnapKit akan menghapus dan menginstal ulang ini (terkadang membuat yang baru) seperlunya.

Alih-alih, Anda ingin menyimpan objek SnapKit Constraint :

self.storedConstraint = make.top.equalTo(other).constraint

Anda kemudian dapat menemukan metode pada batasan itu!

Semua 8 komentar

@NicholasTD07 Anda mungkin tidak ingin menyimpan NSLayoutConstraint karena SnapKit akan menghapus dan menginstal ulang ini (terkadang membuat yang baru) seperlunya.

Alih-alih, Anda ingin menyimpan objek SnapKit Constraint :

self.storedConstraint = make.top.equalTo(other).constraint

Anda kemudian dapat menemukan metode pada batasan itu!

@robertjpayne Oh, benar. Maaf saya baru menggunakan SnapKit selama beberapa hari jadi saya selalu lupa SnapKit manage(install/re-install) NSLayoutConstraint .

Tetapi, dalam kasus ini, ketika saya perlu memegang NSLayoutConstraint , mungkin saya tidak boleh menggunakan SnapKit untuk batasan tertentu itu. Apakah menggunakan NSLayoutConstraint secara langsung saat menggunakan SnapKit akan mengacaukan SnapKit itu sendiri? Apakah mungkin untuk menggunakannya secara bersamaan?

@NicholasTD07 apa alasan untuk membutuhkan NSLayoutConstraint secara langsung? Jika Anda melihat metode yang tersedia di Constraint di sini https://github.com/SnapKit/SnapKit/blob/develop/Source/Constraint.swift itu harus menjadi segalanya di atas dan di luar yang Anda butuhkan?

Anda juga dapat mencampur kendala reguler ke SnapKit, tidak ada konflik selama kendala masih memuaskan. SnapKit akan _never_ menyentuh batasan non SnapKit dengan pengecualian mematikan batasan penanda ukuran otomatis otomatis.

@robertjpayne Jika Anda melihat README AMScrollingNavbar ada bagian di mana Anda dapat menggunakannya dengan topConstraint: NSLayoutConstraint . Saya ingin menggunakannya dengan SnapKit. Namun, sepertinya saya harus melakukan topConstraint sendiri daripada meminta bantuan SnapKit.

Omong-omong, SnapKit sangat keren! Dan kodenya sangat bersih. Kerja yang baik. :+1: :+1:

@NicholasTD07 ah ya, pada dasarnya SnapKit secara otomatis menghapus dan mengelola semua NSLayoutConstraint yang dibuatnya sehingga tidak mudah untuk mencoba dan mendapatkannya secara langsung. Anda sebaiknya membuat yang itu secara khusus melalui apis asli!

@robertjpayne Keren. Terima kasih telah membantu saya memahami mekanisme internal SnapKit dan menemukan solusinya (API asli).

Jangan khawatir!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

MoShenGuo picture MoShenGuo  ·  4Komentar

danieleggert picture danieleggert  ·  3Komentar

cjwirth picture cjwirth  ·  4Komentar

mkoppanen picture mkoppanen  ·  3Komentar

alexpersian picture alexpersian  ·  4Komentar