我可以在代码中非常轻松地将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的背景设置为红色(好吧,更像是烧焦的橙色)以说明问题。
以下是事情的解决方法:
我很惊讶这一直很困难。有什么想法吗?
答案 0 :(得分:18)
在故事板界面构建器
中以下是在标题上拖动UIView后的故事板图像:
答案 1 :(得分:5)
故事板中的导航项目不可能具有自动布局限制。我相信你实际上是将视图拖到实际的视图控制器上。您只能将barButtonItems拖入navigationItem。
另一种选择是
根据我的经验,对navigationBar中的任何视图使用autolayout都不能很好地工作并导致意外的结果。例如,我遇到了错误,其中呈现UIActivityViewController导致意外约束被添加到navigationItem的titleView。
在:
演示UIActivityViewController并跳过第3步后:
答案 2 :(得分:2)
对于那些发现自己在Xcode 8中在UIBarButtonItem中添加自定义视图或UIButton的问题的人来说,解决办法是:Xcode现在仅接受在控制器的视图属性中拖动(Xcode 7允许直接拖动到UINavigationItem)。如果删除控制器的view
,则可以将项目拖动到导航栏上。因此,创建新的空导航控制器,删除根视图控制器内的主视图,将项目拖动到导航栏,复制此导航项(而不是栏本身)并将其粘贴到目标控制器,它将替换旧的导航项。删除那个空控制器后。 PROFIT!
似乎苹果Xcode团队为开发人员提供了比他们的主要产品更激情的新任务。
答案 3 :(得分:2)
您应该先将UIView拖到navigationItme上,然后再将imageView拖到视图上。情节提要中的navigationItem的titleView不接受作为UIView子类的对象。它仅接受UIView类。
将imageView添加到视图中
答案 4 :(得分:0)
这个奇怪的问题与大小等级有关系。
事实上,我遇到了同样的问题,解决方法是:
Any,Any
一切都像魅力一样!
我认为将视图添加到尺寸类未设置为Any,Any
的导航项中会导致问题。
希望这适用于所有人,因为这真的太可怕了:[。