在故事板中添加navigationItem.titleView失败
我可以在代码中非常轻松地将titleView添加到我的navigationItem:
UIImageView *navImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"nav_logo"]]; UIView *titleView = [[UIView alloc] initWithFrame:navImageView.frame]; [titleView addSubview:navImageView]; self.navigationItem.titleView = titleView;
但是,我正试图在我的故事板中做到这一点,而且我的失败是悲惨的。
这就是我所做的:
- 将UIView拖放到VC的导航项顶部。
- 将UIImageView拖放到UIView之上
- 添加宽度/高度/前导/顶部约束
- 设置UIImageView的image属性
我还将我的UIView的背景设置为红色(好吧,更像是烧焦的橙色)来说明问题。
事情的呈现方式如下:
我很惊讶这一直很困难。 有任何想法吗?
在故事板界面构建器中
- 选择视图控制器
- 在属性检查器(⌘⌥4)中的“模拟度量标准”下,对于“顶栏”选择器,选择其中一个导航栏
- 然后你应该可以在故事板上的标题上拖动UIView
- 如果您愿意,可以将“顶栏”设置更改回“推断”
这是在标题上拖动UIView后的故事板图像:
故事板中的导航项目不可能具有自动布局约束。 我相信你实际上是将视图拖到实际的视图控制器上。 您只能将barButtonItems拖入navigationItem。
另一种选择是
- 在不使用autolayout的情况下在单独的xib中创建视图
- 在代码中加载xib
- setTranslatesAutoresizingMaskIntoConstraints为true
- 将titleView分配给视图
根据我的经验,使用自动布局与navigationBar中的任何视图都不能很好地工作并导致意外的结果。 例如,我遇到了错误,其中呈现UIActivityViewController导致意外的约束被添加到navigationItem的titleView。
之前:
在演示UIActivityViewController并跳过第3步之后:
对于那些发现自己在Xcode 8中在UIBarButtonItem中添加自定义视图或UIButton的问题的人来说,解决方案是:Xcode现在仅接受在控制器的视图属性中拖动(Xcode 7允许直接拖动到UINavigationItem)。 如果删除控制器的view
,则可以将项目拖动到导航栏上。 因此,创建新的空导航控制器,删除根视图控制器内的主视图,将项目拖动到导航栏,复制此导航项(而不是栏本身)并将其粘贴到目标控制器,它将替换旧的导航项。 删除那个空控制器后。 利润!
似乎苹果Xcode团队为开发人员提供了比他们的主要产品更激情的新任务。
这个奇怪的问题与大小类有关系。
事实上,我有同样的问题,解决方案是:
- 将故事板的大小类设置为
Any,Any
- 将视图拖放到导航栏项目中。
- 重置故事板的大小等级。
一切都像魅力一样!
我认为将视图添加到导航项目的大小类未设置为Any,Any
导致问题。
希望这适用于所有人,因为这真的太糟糕了:[。