【问题标题】:Make UISearchBar not scrolling like in Contacts app使 UISearchBar 不像在联系人应用程序中那样滚动
【发布时间】:2015-08-21 20:59:56
【问题描述】:

我正在尝试实现一个类似于 Contacts iOS 应用程序的 UI,其中您有一个 UISearchBar 锚定在表格视图的顶部(如果您将其添加为表格视图标题,它将随着内容滚动),以及何时你开始搜索搜索栏会占用导航栏的空间。

我正在使用 UISearchController 的搜索栏。

尝试在表格视图的顶部添加容器视图,并以编程方式将搜索栏添加到其中,但问题是当搜索栏到达导航栏的位置时(由 UISearchController 自动完成)宽度比屏幕大...

这在模拟器和设备中都会发生。

任何(最好是非 hacky)方法来完成这个?

【问题讨论】:

    标签: ios uitableview uisearchbar uisearchcontroller


    【解决方案1】:

    不要使用UITableViewController,使用标准UIViewController,并自己添加searchBartableview

    这是一个示例代码:

    - (void)viewDidLoad
    {
        [super viewDidLoad];
    
        UISearchBar *searchBar = [[UISearchBar alloc] init];
        searchBar.translatesAutoresizingMaskIntoConstraints = NO;
        searchBar.delegate = self;
        [searchBar sizeToFit];
    
        UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
        tableView.translatesAutoresizingMaskIntoConstraints = NO;
        tableView.delegate = self;
        tableView.dataSource = self;
        tableView.contentInset = UIEdgeInsetsMake(searchBar.frame.size.height, 0.0, 0.0, 0.0);
        [tableView reloadData];
    
        [self.view addSubview:tableView];
        [self.view addSubview:searchBar];
    
        [self.view addConstraint:[NSLayoutConstraint constraintWithItem:searchBar attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.topLayoutGuide attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0.0]];
        [self.view addConstraint:[NSLayoutConstraint constraintWithItem:searchBar attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeft multiplier:1.0 constant:0.0]];
        [self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.view attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:searchBar attribute:NSLayoutAttributeRight multiplier:1.0 constant:0.0]];
    
        [self.view addConstraint:[NSLayoutConstraint constraintWithItem:tableView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1.0 constant:0.0]];
        [self.view addConstraint:[NSLayoutConstraint constraintWithItem:tableView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeft multiplier:1.0 constant:0.0]];
        [self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.view attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:tableView attribute:NSLayoutAttributeRight multiplier:1.0 constant:0.0]];
        [self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.view attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:tableView attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0.0]];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-14
      • 1970-01-01
      相关资源
      最近更新 更多