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.
@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!
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
:Anda kemudian dapat menemukan metode pada batasan itu!