我的应用中有两个页面:一个嵌入UINavigationController
而另一个不嵌入。 UINavigationController
中没有的页面有UINavigationBar
我拖入并将其提示设置为空字符串以稍微增加其高度。但是,这会导致它比嵌入在UINavigationController
中的页面略高。这是一个并排的图片:
如果我在左页导航栏上设置了提示,则它的高度会变得太高。当我去故事板检查员时,我看到它的高度应该是74:
是否有人知道如何人为地将页面上的栏嵌入UINavigationController
与{1}}相同的高度?
答案 0 :(得分:7)
对于手动添加UINavigationBar
的其他人(即不通过嵌入UINavigationController
内),这种情况很常见。
通用UINavigationBar
的高度为44分
问题是manually added UINavigationBar
之上的20分差距。
在嵌入版本的情况下,间隙(假设它存在)与UINavigationBar
具有相同的背景颜色。添加提示后,它会向上扩展30个点。所以现在你有74分,而不是20 + 44 = 64分。 embedded UINavigationBar
有64分。因而相差10分。出于同样的原因,在space
上添加“”(embedded UINavigationBar
)会导致高度高于74 points
。
我认为您最好的选择是将其他ViewController
嵌入new UINavigationController
。 iOS非常聪明,可以将其视为只有一个NavigationController
,而不是两个extra UINavigationController
。用户不会遇到任何差异。对于程序员,如果需要以编程方式查找second ViewController
,则需要考虑import time
import random
info = """welcome to contest!..
pls answer question as quick as possible you can
pls enter small letter...\n"""
print(info)
questions = {"2 * 2 ?":"4",
"what is the capital city of turkey?":"ankara",
"what is the king of jungle?":"lion",
"what is the meaning of book in turkish language?":"kitap",
"who is the foundation of turkish government":"atatürk",
"what is the most popular drink in turkey?":"raki",
"pls tell us a hero as comic":"temel"}
correct = 0
wrong = 0
blank = 0
current_time = time.time() #system time
allowed_time = 25 #total time to reply the question
for i in random.sample(list(questions), 5):
question = questions[i]
if time.time() < current_time+allowed_time:
answer = input("1. soru --> {} : ".format(i))
if answer == question:
correct += 1
elif answer == "":
blank += 1
else:
wrong += 1
print()
print("right answer :", correct)
print("wrong answer :", wrong)
print("blank answer :", blank)
。
答案 1 :(得分:1)
我能够回答我自己的问题。
我只是以编程方式更改了自定义UINavigationController
子类中的高度:
override func viewDidAppear(_ animated: Bool) {
let bounds = self.navigationBar.bounds
self.navigationBar.frame = CGRect(x: 0, y: 0, width: bounds.width, height: 74)
}
答案 2 :(得分:1)
答案 3 :(得分:1)
答案 4 :(得分:0)
虽然你已经回答了你的问题,但是AFAIU的高度差是在一个案例中提示但不在另一个案例中的结果。那么使用UINavigationItem
为prompt
内的ViewController添加空字符串UINavigationController
会出现什么问题,例如:
self.navigationItem.prompt = "";
如果UINavigationController
中有许多视图控制器,并且不希望在每个视图控制器中明确设置提示,则可以使用UINavigationControllerDelegate
willShow
或didShow
事件来设置它在所有儿童控制器的一个地方。
这应该比您的方法更可靠,因为导航栏高度在所有设备和所有设备方向上实际上并不相同(AFAIR iPad纵向和横向不同),而且Apple可以在iOS版本之间进行更改。