iOS 11中的UINavigationBar高度问题

时间:2018-04-09 09:39:02

标签: ios ios11 navigationbar

iOS 11中的UINavigationBar存在问题,当设置topItem.prompt时代码为:self.navigationController.navigationBar.topItem.prompt = @"(1/5)"

它在iOS 8~10上运行良好,当它显示提示导航栏时会自动将高度从默认值44改为74(iPhone 5S);

虽然在iOS 11中,navigationBar高度仍然是44,认为外观很好,由于这个高度问题导致按钮无法点击。请在iOS 8和iOS 11上查看快照图片: iOS 8 iOS 11

有没有办法在不使用自定义navigationBar的情况下修复此问题?

1 个答案:

答案 0 :(得分:0)

我在设置topItem.prompt后添加了代码using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml; using System.Xml.Linq; namespace ConsoleApplication1 { class Program { const string FILENAME = @"c:\temp\test.xml"; static void Main(string[] args) { XDocument doc = XDocument.Load(FILENAME); Root root = doc.Elements("root").Select(x => new Root() { Images = x.Descendants("largeImage").Select(z => new Image() { url = (string)z.Element("url"), height = (int)z.Element("height"), width = (int)z.Element("width") }).ToList() }).FirstOrDefault(); root.Images.AddRange(doc.Descendants("smallImage").Select(z => new Image() { url = (string)z.Element("url"), height = (int)z.Element("height"), width = (int)z.Element("width") }).ToList()); } } public class Root { public List<Image> Images { get; set; } } public class Image { public string url { get; set; } public int height { get; set; } public int width { get; set; } } } ,解决了这个问题。

似乎iOS 11中存在导航栏无法动态改变其高度的问题。如果在显示navigationBar之前设置了topItem.prompt,则它没有遇到此问题。但是在显示之后,如果我们想要添加topItem.prompt,则必须添加代码。让navigationBar改变到正确的高度。