我正在以编程方式切换到使用自动布局,所以这对我来说都是新手。作为一般规则,我认为我应该避免直接设置任何帧...
问题:我想使用UILabel
作为视图控制器UINavigationItem
titleView
的视图。
是否可以在导航栏/导航项目中使用自动布局约束?或者,我们是否还需要在某些情况下直接设置框架?
E.g。我正在做这样的事情:
UILabel* title = [UILabel new];
title.text = @"Some Title";
[title sizeToFit];
CGFloat titleWidth = title.bounds.size.width;
[title setFrame:CGRectMake(0, 0, titleWidth, 32.0)];
self.navigationItem.titleView = title;
如您所见,我已将该视图的高度设置为32.0
(对于横向模式)。此外,我允许更改标题文字,因此如果用户进行了更改,我会重新执行sizeToFit
和setFrame
。
这是这样做的吗?或者,是否有自动布局方式?
注意:我看过这个问题/答案: Building a titleView programmatically with constraints (or generally constructing a view with constraints)
通读 - 我仍然不确定是否可以使用约束 ?
答案 0 :(得分:1)
还有一个技巧......你设置为navigationItem.titleView的视图绝不可能是translatesAutoresizingMaskIntoConstraints = false,或者它会在导航动画期间飞越整个导航栏。您还需要确保设置框架宽度和高度。
答案 1 :(得分:0)
我相信你可以。但你为什么要这样?无论如何,约束必须是:
从文档中,titleView
在导航框架中居中,并调整大小以适应。从技术上讲,除了上述内容之外,您不需要任何其他内容,但您可能还需要为superview指定左边距。