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上查看快照图片:
有没有办法在不使用自定义navigationBar的情况下修复此问题?
答案 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改变到正确的高度。