Tag: 快速自动

具有dynamic大小的单元格的复杂AutoLayout

我有一个包含10个子视图的容器(其中两个是简单的界限,其他是标签)。 该计划看起来像这样。 dynamic标签可能包含巨大的文本,所以单元格应该符合适当的大小以适应内容。 问题是如何手动设置所有的约束…我已经尝试了十几次自己做,但似乎我不擅长这一点。 表视图支持行高的自动尺寸,并使用自定义的估计高度。 在故事板中,它看起来是这样的。 其中蓝色视图是视图C的子视图 。 后面的灰色视图是视图B. 粗体标签是静态的,其他标签是dynamic的。 演示项目 。 如何设置约束? 提前非常感谢!

如何在imageView上设置自动布局约束以获得更好的分辨率图像?

我是新的自动布局和图像的资产。 我很困惑,图像视图的高度和宽度,我必须设置修复或根据超视图,它会影响解决与否。 我有一个图像视图40×40。 而我有图像的资产是1x = 72×72,2x = 96×96,3x = 144×144。 我必须为所有具有良好分辨率的设备设置图像,并且根据Superview我想要宽度和高度。 我必须使用什么约束条件,以及如何为所有设备获得良好的分辨率? 是否需要使用自适应布局? 我的意思是Autolayouts资产?

使用Autolay以编程方式居中放置UIView将使视图从超级视图中消失

我有下面的代码来简单地在我的ViewController的view使用AutoLayout约束以编程方式居中红色正方形: class ViewController: UIViewController { let square: UIView required init?(coder aDecoder: NSCoder) { let squareFrame = CGRectMake(0.0, 0.0, 500.0, 500.0) self.square = UIView(frame: squareFrame) super.init(coder: aDecoder) } override func viewDidLoad() { self.view.addSubview(self.square) self.square.backgroundColor = UIColor.redColor() self.view.backgroundColor = UIColor.blueColor() print(self.square) setupConstraints() print(self.square) } func setupConstraints() { self.square.translatesAutoresizingMaskIntoConstraints = false NSLayoutConstraint(item: self.view, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: […]

使用自动布局检索子视图的正确位置

我想以编程方式将一个视图放在故事板中创build的所有子视图的中心。 在故事板中,我有一个视图,并在一个垂直堆栈视图中,它具有约束来填充整个屏幕,分布“等距”。 在垂直堆栈视图的内部,我有3个水平堆栈视图,约束高度= 100,尾随和领先的空间:从超级视angular0。 分布也是“等距”。 在每个水平堆栈视图中,我有两个视图,约束宽度和高度= 100,视图是红色的。 到目前为止,这么好,我有我想要的接口, 现在我想检索每个红色视图的中心,在这个位置放置另一个视图(实际上,它将成为棋盘上的棋子…) 所以我写到: import UIKit class ViewController: UIViewController { @IBOutlet weak var verticalStackView:UIStackView? override func viewDidLoad() { super.viewDidLoad() print ("viewDidLoad") printPos() } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) print ("viewWillAppear") printPos() } override func viewWillLayoutSubviews() { super.viewWillLayoutSubviews() print ("viewWillLayoutSubviews") printPos() } override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() print […]

以编程方式更改自动布局约束后,视图不会更新

事先我不得不说,我实际上已经得到了我想要的可见效果,但不是以一种令人满意的方式,因为现在,限制需要被“破坏”而不是被正确更新。 我有一个ViewController持有一个UITableView。 该tableView的高度可以从0(不可见),不pipe它保存的行数是不同的。 在ViewController的viewDidLoad()中,通过将当前行数乘以行高来计算高度。 我试过的第一件事就是创build一个@IBOutlet weak var tableHeightConstraint: NSLayoutConstraint! 连接到故事板中设置的高度约束。 它只有一些随机的初始高度,但是在ViewController的viewDidLoad()更新为正确的值,如果需要的话更新视图的方法。 tableHeightConstraint = NSLayoutConstraint(item: tableView, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 0, constant: calculatedTableViewHeight) // At this point I've tried a variety of methods like the following two but actually none has worked for me view.layoutIfNeeded() // or view.updateConstraints() // or view.layoutSubviews() […]

如何使UITableViewCell全屏显示(允许分页)?

我有一个自定义的UITableView – 滚动,分页启用 。 因为我的每个单元格都有一个背景图像,所以每次向上或向下滚动时都会将每个图像显示为全屏。 我尝试使我的UITableViewCell成为全屏 (拉伸高度与tableview一样大)。 但是,我有一个问题:当我滚动(分页),单元格不显示为全屏。 它包含下一个单元格的一小部分。 然后每次滚动(分页)时,下一个单元的部分会越来越大。 我没有看到任何UITableViewCell自动布局选项,不能添加约束到原型单元格。 你能否build议我这样做? 非常感谢你。

XCode 7 Autolayout约束条件:如何使2张图片在中间保持水平

我试图将2个UIImage视图并排放置在屏幕中央。 如果它只是1 UIImage,我可以将它们设置为在容器中垂直和水平居中。 如果我有2个UIImage视图并排,我只能将它设置为垂直居中,但不是水平居中,因为两个UIImage视图将堆叠在一起。 有人能指导我吗? 谢谢,非常感谢!

出现键盘时,移动带有自动布局约束的文本字段

我有一个search栏文本字段和一个表格视图(谷歌自动完成),我想翻译时,键盘进入视图。 我成功地做到这一点,但是,我收到有关我的限制的警告/错误。 我在这个视图上通过故事板使用自动布局,并试图在显示/隐藏键盘之前/之后禁用/启用约束,但我仍然收到这些错误。 我没有正确禁用自动布局? 我遵循这个 SO响应中给出的内容。 override func viewDidLoad() { … NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name:UIKeyboardWillShowNotification, object: nil) NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide:"), name:UIKeyboardWillHideNotification, object: nil) … } func keyboardWillShow(sender: NSNotification) { self.pixieLabel.hidden = true self.searchBar.setTranslatesAutoresizingMaskIntoConstraints(true) self.startingTableView.setTranslatesAutoresizingMaskIntoConstraints(true) self.searchBar.frame.origin.y -= 150 self.startingTableView.frame.origin.y -= 150 } func keyboardWillHide(sender: NSNotification) { self.pixieLabel.hidden = false self.searchBar.setTranslatesAutoresizingMaskIntoConstraints(false) self.startingTableView.setTranslatesAutoresizingMaskIntoConstraints(false) self.searchBar.frame.origin.y += 150 self.startingTableView.frame.origin.y += […]

如何在SWIFT中将文本视图的高度调整为其内容?

在我的视图控制器中,我有一个UITextView。 这个textview是填充一个string。 string可以是短或长。 根据string的长度,textview的高度必须调整。 我使用故事板和自动布局。 我对textview的高度有一些麻烦。 有时,高度是完全适应文本。 有时,不,文本在第一行被裁剪。 下面,textview是黄色的。 蓝色是scrollview内的容器视图。 紫色是一个图片的地方。 这些文本来自我的核心数据库,它们是string属性。 在屏幕1和2之间,唯一改变的是string。 如果我在控制台打印string,我有正确的文本: my amazing new title Another funny title for demo 我的textview的限制: 我不明白为什么我有两个不同的显示器。 编辑 我尝试了@Nate的build议,在viewDidLoad,我补充说: myTextViewTitle.text="my amazing new title" myTextViewTitle.setContentHuggingPriority(1000, forAxis: UILayoutConstraintAxis.Vertical) myTextViewTitle.setContentCompressionResistancePriority(1000, forAxis: UILayoutConstraintAxis.Vertical) myTextViewTitle.setTranslatesAutoresizingMaskIntoConstraints(false) let views = ["new_view": myTextViewTitle] var constrs = NSLayoutConstraint.constraintsWithVisualFormat("|-8-[new_view]-8-|", options: NSLayoutFormatOptions(0), metrics: nil, views: views) self.view.addConstraints(constrs) self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-8-[new_view]", […]

UIStackView分发填充同样

所以,我有一个包含四个(4) UIView的UIStackView 。 如果我移除这些UIView的一个,其他三个将填充UIStackView的整个空间。 我的问题: 我怎样才能在UIView上添加一个最大高度,使它不会填充UIStackView的整个空间,即使分布是平等的填充? 我读了一些关于添加约束的东西,但是我无法使其工作。 顺便说一句,我正在使用swift。 谢谢。