TopGit theo dõi robb/Cartography trên GitHub, đã đạt 7.3k sao. A declarative Auto Layout DSL for Swift :iphone::triangular_ruler:
Tóm tắt dựng từ metadata GitHub của chính dự án — chưa có bài review TopGit. Trang sẽ tự động cập nhật khi bài review đầy đủ được xuất bản.
VÌ SAO CHƯA CÓ REVIEW
TopGit viết bài đầy đủ cho repo có nhiều sao nhất và được yêu cầu nhiều nhất. Trang này là snapshot trong thời gian chờ — xem README gốc ở tab READ ME.
If you end up using Cartography in production, I'd love to hear from you. You can reach me through Twitter or email.
Installation
CocoaPods
To integrate Cartography into your Xcode project using CocoaPods, specify it in your Podfile:
target '<Your Target Name>' do
pod 'Cartography', '~> 3.0'
end
Then, run the following command:
$ pod install
Usage
Call the constrain* function with your UIView or NSView instances as well
as a closure in which you declare the constraints between the different
attributes of your views:
For every view on the left hand side of an equality or inequality operator,
Cartography will automatically set its
translatesAutoresizingMaskIntoConstraints property to false.
If the view is
not controlled by you–for example if it belongs to a Apple-provided
UIViewController class–you should take appropriate care when declaring its
constraints.
Replacing constraints
You can capture multiple constraints in a group to then replace them with new
constraints at a later point.
constrain(view) { view in
view.width == 100
view.height == 100
}
let group = ConstraintGroup()
// Attach `view` to the top left corner of its superview
constrain(view, replace: group) { view in
view.top == view.superview!.top
view.left == view.superview!.left
}
/* Later */
// Move the view to the bottom right corner of its superview
constrain(view, replace: group) { view in
view.bottom == view.superview!.bottom
view.right == view.superview!.right
}
UIView.animate(withDuration: 0.5, animations: view.layoutIfNeeded)
For convenience, the constrain functions also returns ConstraintGroup
instances:
let group = constrain(button) { button in
button.width == 100
button.height == 400
}
Supported attributes
Cartography supports all built-in attributes as of iOS 8 and OS X 10.9, those are:
width
height
top
right
bottom
left
leading
trailing
centerX
centerY
baseline
as well as the iOS specific
firstBaseline
leftMargin
rightMargin
topMargin
bottomMargin
leadingMargin
trailingMargin
centerXWithinMargins
centerYWithinMargins
edgesWithinMargins
These can be further refined using the following operators: *, /, + and
-.
Additionally, it supports convenient compound attributes that allow you to
assign multiple attributes at once:
Which is equivalent to view1.top == view2.top; view2.top == view3.top. Similar
variants exist for top, rightbottom, left, leading, trailing,
centerX, centerY and baseline.
Distributing views evenly
For distributing multiple views, either horizontally or vertically, you can use
the distribute functions:
Since the ==, >=, <= and ~ emit NSLayoutConstraint instances, you can
capture their results if you need to refer to the layout constraints at a later
time:
var width: NSLayoutConstraint?
constrain(view) { view in
width = (view.width == 200 ~ 100)
}
Note that declaring compound attributes returns multiple constraints at once:
var constraints: [NSLayoutConstraint]?
constrain(view) { view in
constraints = (view.size == view.superview!.size ~ .defaultLow)
}
Documentation
Read the documentation here. For more information, see the gh-pages branch.
* Since Xcode 11 and swift 5.1 the keyword constrain conflicts with the ones used by the CommonUISDK... so, Calling the function with the module name is necessary to make it work properly
e.g.: Cartography.constrain
If you're using it with Xcode 10.3 or earlier, you can still use it as it is, without the module name alongside the function.
Versioning
For Swift 3.x: Versions <= 1.1.0
For Swift 4.x: Versions >= 2.0.0
For Swift 5.x: Versions >= 4.0.0
Support
Please, don't hesitate to file an
issue if you have questions.
About Cartography
Cartography was built by Robb Böhnke, is maintained by Orta Therox and was inspired by the excellent
FLKAutoLayout by Florian Kugler.
Trang TopGit này là một snapshot — tab "Readme" hiển thị nguyên văn README của repo (đã bỏ link, giữ ảnh). Repo GitHub ở github.com/robb/Cartography là nguồn chính thức.
robb/Cartography có bao nhiêu sao?
robb/Cartography có 7.3k sao GitHub — tải lại trang để xem số mới nhất, hoặc xem trực tiếp github.com/robb/Cartography. TopGit phản chiếu số sao của GitHub nhưng không cam kết đến từng phút.
robb/Cartography có phải mã nguồn mở không?
TopGit chưa ghi nhận license cho robb/Cartography. Phần lớn repo public trên GitHub là mã nguồn mở, nhưng điều khoản khác nhau từng repo — mở file LICENSE để xác nhận.
robb/Cartography còn đang phát triển không?
Commit gần nhất trên robb/Cartography là 11 tháng trước (theo timestamp GitHub). Repo có 527 fork — một chỉ báo về mức độ quan tâm của cộng đồng.
robb/Cartography là gì?
robb/Cartography (robb/Cartography) là dự án Swift trên GitHub. Theo mô tả gốc: A declarative Auto Layout DSL for Swift :iphone::triangular_ruler:
Đọc đầy đủ README ở tab phía trên.
Muốn nghe thêm một ý kiến về Cartography?
Hỏi một AI đọc được trang này — một cú bấm là có ngay nhận định về Cartography.