func setupPosition() {
box.snp.makeConstraints{(make)->Void in
make.edges.equalTo(view).inset(UIEdgeInsetsMake(64+20, 20, 250, 20))
}
textField.snp.makeConstraints{(make)->Void in
make.edges.equalTo(box).inset(UIEdgeInsetsMake(5, 5, 150, 5))
}
stackBoxOne.snp.makeConstraints{(make)->Void in
make.top.equalTo(box).offset(textField.frame.size.height)
make.left.equalTo(box).offset(5)
make.bottom.equalTo(box).offset(-90)
make.right.equalTo(box).offset(-5)
}
}
Run Code Online (Sandbox Code Playgroud)
我希望把stackBoxOne下textField。但是上面的代码不起作用。如何修改代码?感谢您的时间。
我希望在屏幕上水平地分隔未知数量的按钮.我想知道我是否可以互相创建他们的间距.例如,下面的代码可以工作吗?
let button1 = UIButton()
let button2 = UIButton()
superview.addSubview(button1)
superview.addSubview(button2)
button1.snp_makeConstraints { (make) -> Void in
make.height.equalTo(100)
make.top.equalTo(50)
make.left.equalTo(superview.snp.left)
make.right.equalTo(button2.snp.right)
make.width.lessThanOrEqualToSuperview()
}
button2.snp_makeConstraints { (make) -> Void in
make.width.lessThanOrEqualToSuperview()
make.height.equalTo(100)
make.top.equalTo(50)
make.left.equalTo(button1.snp.left)
make.right.equalTo(superview.snp.right)
}
Run Code Online (Sandbox Code Playgroud) 我如何使用 snap kit 来实现视图之间的相同间距(以及 firstSubview.left 和 lastSubview.right 的超级视图),如下图中的条形图(并使用 SnapKit 而不是堆栈视图等)?
谢谢!
我有一个 [[TextField 需要最大可用宽度----]offset(10.0)][Label]]。我想将 TextFeild 引脚设置为左侧并缩小所有可用空间,而无需修剪标签,并将标签设置为右侧引脚并获得最小的适合尺寸。
lazy var textField: UITextField = {
var textField = UITextField()
textField.placeholder = "Placeholder"
textField.delegate = self
textField.borderStyle = UITextField.BorderStyle.none
textField.keyboardType = UIKeyboardType.numberPad
textField.returnKeyType = UIReturnKeyType.done
textField.setContentHuggingPriority(.defaultHigh, for: .horizontal)
return textField
}()
lazy var measureLabel: UILabel = {
var label = UILabel()
label.numberOfLines = 1
label.setContentHuggingPriority(.defaultLow, for: .horizontal)
label.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
return label
}()
measureLabel.snp.makeConstraints { (make) in
make.right.equalTo(self.snp.right)
make.centerY.equalToSuperview()
}
textField.snp.makeConstraints { (make) in
make.left.equalToSuperview()
make.right.equalTo(self.measureLabel.snp.left).offset(-10.0)
make.centerY.equalToSuperview()
}
Run Code Online (Sandbox Code Playgroud) 我对使用 SnapKit 相当陌生,我在互联网上到处搜索,但找不到能回答我的问题的正确资源。所以就这样了。我有一个 UIView,它是控制器视图的子视图,我希望它的高度随着其超级视图的高度而动态变化。像这样:
make.top.left.right.equalTo(view)
make.height.equalTo(view.safeAreaLayoutGuide.snp.height).multipliedBy(0.25)
Run Code Online (Sandbox Code Playgroud)
但是,当视图控制器进入导航控制器并显示导航栏时,我在上面设置的约束不会计算出现的导航栏的高度。所以导航栏只覆盖了我的自定义视图。当您尝试设置如上所述的约束时,我试图弄清楚如何考虑导航栏的高度。有任何想法吗?我尝试过make.height.equalTo(view.layoutMarginsGuide.snp.height).multipliedBy(0.25),但没有运气。
当我尝试在创建约束后立即更新 snapkit 约束时,出现Updated constraint could not find existing matching constraint to update错误。我正在使用的代码如下:
let directionList = UITableView()
directionList.delegate = self
directionList.dataSource = self
directionList.tag = DIRECTIONS_TABLE_TAG
self.view.addSubview(directionList)
directionList.snp.makeConstraints{ (make) -> Void in
make.width.equalToSuperview()
make.top.equalTo(self.view.snp.bottom)
make.left.equalToSuperview()
make.right.equalToSuperview()
make.bottom.equalToSuperview().offset(-20)
}
directionList.snp.updateConstraints { (make) -> Void in
make.top.equalTo(self.topDarkBlue.snp.bottom)
}
Run Code Online (Sandbox Code Playgroud) 我使用 SnapKit 来进行约束并以编程方式创建视图。然而,有一件事我无法理解。
我想将子 UIView 添加到表视图单元格的内容视图中并设置其高度。这已经导致了不可满足的约束错误。
我也尝试在表视图中设置(估计)rowHeight,但这没有帮助。
2018-07-14 19:21:38.785556+0200[20027:748731] [LayoutConstraints] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want.
Try this:
(1) look at each constraint and try to figure out which you don't expect;
(2) find the code that added the unwanted constraint or constraints and fix it.
(
"<SnapKit.LayoutConstraint:0x6000000b6500@WeatherCell.swift#24 UIView:0x7fa342409240.top == UITableViewCellContentView:0x7fa342413970.top>",
"<SnapKit.LayoutConstraint:0x6000000b7880@WeatherCell.swift#24 UIView:0x7fa342409240.bottom == UITableViewCellContentView:0x7fa342413970.bottom>",
"<SnapKit.LayoutConstraint:0x6000000b8a80@WeatherCell.swift#26 UIView:0x7fa342409240.height == 145.784842967987>",
"<NSLayoutConstraint:0x604000282210 'UIView-Encapsulated-Layout-Height' UITableViewCellContentView:0x7fa342413970.height == 146 (active)>" …Run Code Online (Sandbox Code Playgroud) 为什么要UIStackView调整子视图的大小?我认为它的工作时,我设置distribution一样.fill。但.equalSpacing并不暗示有这种行为。我是对的?
let stackView = UIStackView()
stackView.alignment = .firstBaseline
stackView.axis = .vertical
stackView.distribution = .equalSpacing
stackView.spacing = 0.0
stackView.translatesAutoresizingMaskIntoConstraints = true
self.view.addSubview(stackView)
stackView.snp.makeConstraints { (make) -> Void in
make.top.equalTo(button.snp.bottom)
make.left.equalTo(view).offset(16.0)
make.bottom.equalTo(view)
make.right.equalTo(view).offset(-16.0)
}
let exampleView = UIView(frame: .zero)
stackView.addArrangedSubview(exampleView)
exampleView.backgroundColor = .yellow
exampleView.snp.makeConstraints { (make) in
make.width.equalToSuperview()
make.height.equalTo(60.0)
}
Run Code Online (Sandbox Code Playgroud) 我花了很长时间尝试堆叠以编程方式创建的视图。我以编程方式查看了在 UIStackView 中添加视图的示例,但这不起作用。下面列出的是代码,我setUpListings从视图控制器调用。有两个条目,但仅显示一个条目。
import UIKit
import SnapKit
class ListingsView : UIView {
var containerView: UIView!
var listingsContainerView: UIStackView!
init() {
super.init(frame: CGRect.zero)
setUpContainerView()
setUpListingsContainer()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
func setUpContainerView() {
containerView = UIView()
self.addSubview(containerView)
containerView.snp.makeConstraints { (make) in
make.height.equalTo(self)
make.width.equalTo(self)
containerView.backgroundColor = UIColor.white
}
}
func setUpListingsContainer() {
listingsContainerView = UIStackView()
listingsContainerView.distribution = .equalSpacing
listingsContainerView.alignment = .fill
listingsContainerView.axis = .vertical
listingsContainerView.spacing = 10
listingsContainerView.translatesAutoresizingMaskIntoConstraints = false
containerView.addSubview(listingsContainerView)
listingsContainerView.snp.makeConstraints { (make) …Run Code Online (Sandbox Code Playgroud) 我尝试使用 snapkit 创建 1:1 的宽高比约束。如果我使用故事板,可以简单地使用宽高比约束工具来实现,但使用 SnapKit,这似乎并不那么容易。
我怎样才能做到这一点?
snapkit ×10
swift ×8
ios ×5
autolayout ×2
uikit ×2
cocoapods ×1
uistackview ×1
uitableview ×1
uiview ×1