Tag: nslayoutanchor

使用NSLayoutAnchor删除情节提要

接口构建器是Apple提供的出色工具。 但是,了解事物的编程方面也很重要。 不用担心,那不会那么痛苦。 卸下主板 在Xcode中打开一个新项目,然后选择“单一视图应用程序模板”。 默认情况下,此模板提供Storyboard,因此让我们先删除Main.Storyboard。 更新信息列表 尽管已删除它,但Xcode仍认为它正在引用情节提要,因此我们需要进入info.plist并删除以下行。 更新AppDelegate 现在,在AppDelegate.swift中,找到didFinishLaunchingWithOptions(:)并使用以下代码对其进行更新。 窗口= UIWindow(框架:UIScreen.mainScreen()。bounds) window?.rootViewController = UINavigationController(rootViewController:ViewController()) 窗口?.makeKeyAndVisible() 返回真 我们正在使用屏幕边界初始化window属性,并设置其rootViewController。 通过将ViewController放置在导航控制器中,我们可以免费获得导航栏。 此外,makeKeyAndVisible被调用,Apple提供了一个很好的解释: 这是一种方便的方法,可以显示当前窗口并将其放置在所有其他相同或更低级别的窗口之前。 使用NSLayoutAnchor的视图 让我们继续使用快速的hello world标签进行测试。 在ViewController.swift中,我们将更新viewDidLoad(:)以在红色背景上显示标签。 我们将首先将视图的背景色更新为红色。 这显示了不使用Interface Builder来更新视图属性是多么容易。 view.backgroundColor = UIColor.redColor() 接下来,我们将创建一个带有文本Hello World的标签,其中文本颜色为白色。 让标签= UILabel() label.text =“世界你好” label.textColor = UIColor.whiteColor() 容易吧? 有趣的部分是当我们需要以编程方式应用约束时! 要通过代码创建类似于Storyboard的约束,我们可以使用NSLayoutConstraints。 但是,NSLayoutConstraint可能太冗长,因此可能会使您有点眼花hard乱。 Apple在iOS9中推出了名为NSLayoutAnchor的工厂类来帮助我们。 绝对值得一看! view.addSubview(label) label.translatesAutoresizingMaskIntoConstraints = false label.centerXAnchor.constraintEqualToAnchor(view.centerXAnchor).active = true label.centerYAnchor.constraintEqualToAnchor(view.centerYAnchor).active = […]

通过布局锚点自动布局

通过视觉格式语言添加约束非常容易和有趣。 但是一旦我们有了复杂的观点,这将成为一项艰巨的任务。 如果事情没有按预期进行并且需要调试约束,则将变得更加困难。 或者,如果视图是由其他人创建的,并且您需要在一个已经有很多标签及其对应的文本字段的大表格中的另一个文本字段中滑动。 营救布置锚点 布局锚是Apple在iOS 9中引入的一种机制。这是一种添加可读性和简洁性的约束的全新方法。 根据类的定义: NSLayoutAnchor: 一个工厂类,用于使用流畅的API创建布局约束对象。 使用这些约束可以通过“自动布局”以编程方式定义布局。 与其直接创建NSLayoutConstraint对象,不如从要约束的UIView,NSView或UILayoutGuide对象开始,然后选择该对象的锚点属性之一。 布局锚是在UIView,NSView或UILayoutGuide上定义的属性。 在本文中,我们将集中讨论UIView上定义的Layout Anchor属性。 在UIView上总共定义了12个Layout Anchor属性。 它们可以分为三种类型。 水平 , 垂直和尺寸 。 从NSLayoutAnchor类派生的每种类型对应三个独立的类。 NSLayoutXAxisAnchor , NSLayoutYAxisAnchor和NSLayoutDimension 。 水平布局锚 这些是锚属性,用于添加水平约束或沿视图X轴的约束。 这些是NSLayoutXAxisAnchor类的实例。 这些包含以下锚点: 领先的锚 尾锚 左锚 右锚 Center-X锚 在这里,所有约束都是不言自明的。 值得指出的一个区别是,前导锚和尾锚是动态的,并且可能会根据语言环境的方向而变化。 也就是说,对于LTR(从左到右)语言,它们将从左到右,对于RTL语言,则将从右到左。 相反,无论如何,左右锚点始终保持左右。 垂直布局锚 这些是锚属性,用于沿视图的Y轴添加约束。 NSlayoutYAxisAnchor类的实例,这些属性包含以下锚点: 顶锚 底部锚 中心Y型锚 第一基准锚 最后基准锚 在此,第一基线是多行标签中第一行文本的基线。 同样,最后基线是多行标签中文本最后一行的基线。 如果文本为单行,则它们将相同。 尺寸布局锚 这些定位点定义视图的大小。 它们是NSLayoutDimension类的实例。 其中包含以下锚点: […]

在iOS上,边距,边缘插入,内容插入,alignmentmatrix,布局边距,锚点​​之间有什么区别?

似乎有几个不同的选项/术语和iOS社区的人在布局方面使用(例如,UIEdgeInsets是一种types,但有时我听到/读“设置插页”或版面边距vs布局指南)。 我一直能find一个有效的select。 但我不确定我是否正在使用正确的工具。 有人可以帮助提供布局的这些不同方面之间的清晰度,什么时候以最好的方式使用每个方面?