问题标签 [nslayoutanchor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - 如果设置锚点,如何获得视图的高度
我目前正在尝试访问我之前为其设置锚点的视图的高度。因此,例如,我searchTable
在 ViewController 中设置了使用以下内容的左、右、上和下锚:
searchTable
是我创建的一个类的对象,它继承自 UIView 并在其中有一个 UIImageView。我通过在 init 函数中使用以下内容来约束 UIImageView:
在哪里:
在 init 的 init 函数中searchTable
,我尝试将角半径设置为图像大小的一半。我尝试使用self.frame.height
,self.frame.size.height
和self.bounds.height
获取约束的.constant
值,但都返回 0。self.heightAnchor
我认为有一个解决方案来解决这个问题,但我一直无法找到它。
ios - 将可视格式的约束转换为 NSLayoutAnchor API
几个月前我从这个 SO question 得到了以下扩展,我想把它翻译成 NSLayoutAnchor (或更详细的布局 API),原因很简单,视觉格式不支持指定安全区域布局指南。
链接中的扩展名是这个:
我的视图层次结构是:
UINavigationController -> 根视图控制器:UIPageViewController -> 第一页:UIViewController -> UIScrollView -> UIImageView
当我打电话bindFrameToSuperviewBounds()
时,结果如下:
看起来大部分都很好。问题是图像视图位于导航栏下方,这是我不想要的。所以为了解决这个问题,我试图重写bindFrameToSuperviewBounds()
为:
结果是这样的:
这次它正确地没有进入导航栏,但是...您可以看到它被拉伸了,这是我不想要的。
将可视布局 API 转换为可以考虑安全区域布局指南的正确方法是什么?
为了完整起见,设置滚动视图和图像视图的代码如下:
ios - 使用 NSLayoutAnchor.constraintEqualToSystemSpacingAfter 时的控制台警告
我正在使用NSLayoutAnchor
'sconstraintEqualToSystemSpacingAfter
来构建我的布局。
它确实有效,但在我激活约束后它会在控制台中引发警告:
不建议将 [自定义视图] 的右边缘与 [第二个自定义视图] 的右边缘对齐。为您的约束使用显式常量来覆盖它。
我怎样才能让这个警告消失?
ios - 如何在没有 IBOutlet 或标识符的情况下从 Storyboard 更新约束?
我有很多在情节提要中创建的视图,但我希望它们能够动态更新它们的约束,而不必每次都使用 IBOutlet。
我首先为要更新的视图的超级视图创建了一个自定义类,然后像这样更改其子视图的底部约束:
'NSLayoutAttribute.bottom' 似乎不是检查 Anchor 类型的正确方法。
如何检查要更改的约束类型?
我是否正确更新了要更改的视图的超级视图中的约束,而不是视图本身?
ios - 如何“添加”两个 NSLayoutDimensions?
添加两个NSLayoutDimension
对象并没有真正意义,但我试图将容器视图的高度设置为具有动态高度的两个子视图的高度。
这是我正在尝试做的事情的可视化表示,在哪里dynamic view 1
以及dynamic view 2
两者都有动态高度,以及根据两个动态视图的大小的容器视图大小。
以编程方式,类似于:
但这显然会返回错误。设置这些约束的最佳方法是什么?
ios - tabBar.topAnchor 的奇怪布局
我有几个子视图
我尝试通过 layoutAnchor 进行布局。(此时我将 pageControl.bottomAnchor 锚定到 view.bottomAnchor )
所以它工作得很好,当我在适当的地方旋转设备 pageControl 夹子时
但是,如果尝试锚定 pageControl.bottomAnchor = tabBarController?.tabBar.topAnchor 而不是 view.bottomAnchor 则在纵向上一切正常,但是当我旋转设备时会发生一些恼人的事情:pageControl 上升
我猜问题出在 pageControl.bottomAnchor = tabBarController?.tabBar.topAnchor 字符串中,但我知道为什么?在横向仍然保留 tabBar 和 pageControl 仍然必须将其锚定到 tabBar 的 topAnchor。请也许有人知道这种行为是怎么回事?
ios - 无法使用锚激活约束,因为它们没有共同的祖先
我在界面生成器中添加了一个名为 myView 的视图,如下面的代码所示,并将其作为子视图添加到主视图中,然后我以编程方式添加了三个按钮。在尝试应用锚约束之前,我已将这些作为子视图添加到主视图。我还将按钮设置为 translatesAutoresizingMaskIntoConstraints = false。有谁知道我在这里做错了什么才能得到以下错误?
无法使用锚激活约束,因为它们没有共同的祖先。约束或其锚点是否引用不同视图层次结构中的项目?那是违法的。
ios - layoutMarginsGuide 似乎有点过分?
当我试图创建布局约束时,我读到了 NSLayoutAnchor 类。他们说:
笔记
UIView 不提供布局边距属性的锚属性。相反, layoutMarginsGuide 属性提供了一个 UILayoutGuide 对象来表示这些边距。使用指南的锚属性来创建您的约束
好的。但同时我为没有 UILayoutGuide 属性的布局边距属性创建了锚属性。
那么为什么我们需要 UILayoutGuide 对象呢?事实证明 UIView 确实为布局边距属性提供了锚属性?如果有人知道任何事情,我将不胜感激。