横向设备时,UISearchBar 不附加导航栏

Posted

技术标签:

【中文标题】横向设备时,UISearchBar 不附加导航栏【英文标题】:UISearchBar doesn't attached with navigation bar when device in landscape 【发布时间】:2013-10-03 08:14:18 【问题描述】:

在导航栏下添加了 UISearch 栏。 我用

 [videoSearchBar  setFrame:CGRectMake(0, 64, 320, 44)]; 

适用于 ios 7。

在横向模式下,导航栏和搜索栏之间存在间隙。 在早期版本中,它可以在没有 setFrame 的情况下正常显示。

在搜索栏下方有一个表格视图。

【问题讨论】:

导航栏高度在纵向和横向之间变化。使用topLayoutGuide 定位您的搜索栏。 谢谢@albertamg。你能解释一下如何做到这一点。您是指 UI 构建器还是以编程方式完成。 【参考方案1】:

导航栏的高度在纵向和横向之间变化。使用topLayoutGuide 定位您的搜索栏。您可以在 Interface Builder 中或以编程方式执行此操作:

- (void)viewDidLoad

    [super viewDidLoad];

    UISearchBar *searchBar = [[UISearchBar alloc] init];
    searchBar.delegate = self;
    [self.view addSubview:searchBar];

    searchBar.translatesAutoresizingMaskIntoConstraints = NO;
    NSDictionary *views = @@"v":searchBar,
                            @"topLayoutGuide":self.topLayoutGuide;

    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[topLayoutGuide][v]" options:0 metrics:nil views:views]];
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[v]|" options:0 metrics:nil views:views]];


#pragma mark - UISearchBarDelegate

- (UIBarPosition)positionForBar:(id <UIBarPositioning>)bar

    return UIBarPositionTopAttached;

【讨论】:

以上是关于横向设备时,UISearchBar 不附加导航栏的主要内容,如果未能解决你的问题,请参考以下文章

UIsearchBar 取消按钮导致导航栏未隐藏

使用 SwiftUI 将设备旋转到横向时出现导航栏

当键盘出现时,导航栏内的 UISearchBar 会受到尊重

导航栏中的 UISearchBar

UISearchBar 移动到屏幕顶部时未收到触摸

UISearchBar 横向宽度错误