Swift 更改UINavigationController中UINavigationBar的约束

Swift 更改UINavigationController中UINavigationBar的约束,swift,uinavigationcontroller,uinavigationbar,imessage,Swift,Uinavigationcontroller,Uinavigationbar,Imessage,苹果在其声明中说: 允许使用UINavigationBar类的方法和属性自定义导航栏的外观,但决不能更改其框架、边界或alpha值或直接修改其视图层次结构 他们从未严格提到不允许更改约束,但我假设它与更改框架的条件相同 我需要一个消息应用程序,以实现iMessage标准顶栏下的半透明效果。我目前拥有的是一个UINavigationController嵌入在MSMessageAppViewController中,在topLayoutGuide下面设置了topAnchor。这会阻止我实现效果,但会相

苹果在其声明中说:

允许使用UINavigationBar类的方法和属性自定义导航栏的外观,但决不能更改其框架边界alpha值或直接修改其视图层次结构

他们从未严格提到不允许更改约束,但我假设它与更改框架的条件相同

我需要一个消息应用程序,以实现iMessage标准顶栏下的半透明效果。我目前拥有的是一个
UINavigationController
嵌入在
MSMessageAppViewController
中,在
topLayoutGuide
下面设置了
topAnchor
。这会阻止我实现效果,但会相应地将导航栏放在顶部栏的下方。如果我将约束设置为仅附着到topAnchor,则导航栏将隐藏在扩展视图中。在此处更改
UINavigationBar
的约束可以解决此问题


是否允许我更改
UINavigationBar
的约束条件,如果不允许,是否允许我更改此问题的任何其他解决方案?如需更多信息,请告诉我

我不知道Stack Overflow上的任何人都能回答这个问题,因为这最终取决于苹果的意见/评论。我已经发布了带有超大/修改过的导航栏和导航控制器框架的应用程序,没有遭到苹果的拒绝,所以我想暂时说,在你的应用程序中修改是安全的


我不确定您在描述什么(因为我不知道什么是
messagescoontroller
),但听起来您在另一个导航控制器中嵌入了一个导航控制器,并且通过隐藏其中一个栏来解决问题听起来像是代码气味…

messagescoontroller是消息扩展的默认视图控制器。如果你签出一个新的消息应用程序并进入扩展模式,你就会知道默认栏的意思。它们是相对较新的,因此它们的行为有时有点出乎意料。@Cristoph这是iOS 10吗?你能提供一个苹果文档的链接吗?@Christoph,啊
MSMessagesAppViewController
不像你在问题中说的那样是
MessagesController
。我希望做一些与你非常相似的事情。我有一个MSMessageAppViewController,我以编程方式向其中添加了一个UINavigationController,以便将不同的视图推送到堆栈上。当我展开时,视图隐藏在顶部后面(其中显示了您正在与之交谈的人的照片。我正在使用Xamarin,并尝试了如下操作:navController.View.TopAnchor.ConstraintEqualTo(mainViewController.TopLayoutGuide.GetBottomAnchor());