【发布时间】:2018-04-13 15:08:09
【问题描述】:
线程视图中的 Apple Mail 应用程序有一个动态的、比通常更高的导航栏,当您滚动时它会折叠。是否可以仅使用允许的 API 调用来实现相同的效果,还是只能在 Apple 内部使用?
【问题讨论】:
-
你设置
prefersLargeTitles = YES了吗?
标签: ios objective-c uinavigationbar
线程视图中的 Apple Mail 应用程序有一个动态的、比通常更高的导航栏,当您滚动时它会折叠。是否可以仅使用允许的 API 调用来实现相同的效果,还是只能在 Apple 内部使用?
【问题讨论】:
prefersLargeTitles = YES了吗?
标签: ios objective-c uinavigationbar
请查看here。该链接有不同的方法来解决问题。 但是下面的代码帮助了我。
for subview in (self.navigationController?.navigationBar.subviews)! {
if NSStringFromClass(subview.classForCoder).contains("BarBackground") {
var subViewFrame: CGRect = subview.frame
// subViewFrame.origin.y = -20;
subViewFrame.size.height = 100
subview.frame = subViewFrame
}
}
【讨论】:
你可以设置如下
-(void)layoutSubviews{
[super layoutSubviews];
CGRect rectStatus = [[UIApplication sharedApplication] statusBarFrame];
if (rectStatus.size.height==44.f) {
}else{
if (@available(iOS 11.0, *)) {
for ( UIView*aView in self.subviews) {
if ([NSStringFromClass(aView.classForCoder) isEqualToString:@"_UINavigationBarContentView"]) {
aView.frame = CGRectMake( 0,20,aView.frame.size.width,44);
}
else if ([NSStringFromClass(aView.classForCoder) isEqualToString:@"_UIBarBackground"]) {
aView.frame = CGRectMake(0,0,aView.frame.size.width, 64);
}
}
}
}
}
【讨论】: