iPhone X上的错误观看位置

时间:2017-09-20 15:39:08

标签: ios ios11 iphone-x

我的应用程序在所有设备上都很好看,直到我在新的iPhone X上测试它(参见附带的屏幕截图)。 搜索栏位于导航栏下方,非常糟糕。我尝试使用新的安全区域插入,edgeForExtendedLayout,但没有成功。也许有人可以帮助解决这个问题。

enter image description here

2 个答案:

答案 0 :(得分:0)

short videos Apple posted about iPhone X (and 8 and 8 Plus) development解决了这种确切情况(或一对非常接近它的情况)。

在他们为iPhone X调整WWDC应用程序的案例研究中,they find that the search bar isn't set up right in the Videos tab。这是因为他们present UISearchController let searchController = UISearchController(searchResultsController: nil) // configure searchController properties if #available(iOS 11.0, *) { self.navigationItem.searchController = searchController searchController.isActive = true // to show it now } else { present(searchController, animated: true, completion: nil) } ,但在iOS 11(对于所有设备)处理此问题的最佳方法是将搜索控制器附加到导航项。如果您仍需要部署回iOS 10(或更早版本),则可以通过可用性检查来处理此问题:

if #available(iOS 11.0, *) {
    self.navigationItem.searchController = searchController
    searchController.isActive = shouldShowBarNow // made up local variable
} else {
    if shouldShowBarNow {
        self.tableView.tableHeaderView = searchController.searchBar
    } else {
        self.tableView.tableHeaderView = nil
    }
}

同样,如果您直接将搜索栏设置为表格视图的标题,you can attach it to the navigation item instead there, too

multiDexEnabled = true

答案 1 :(得分:0)

经过一番调查后,我想出了如何解决我的问题。我必须根据安全区域对齐搜索视图。请参阅以下解决方案:

 if (@available(iOS 11.0, *))
 {
     [self.searchView setTranslatesAutoresizingMaskIntoConstraints:NO];
     UILayoutGuide *guide = self.view.safeAreaLayoutGuide;

     [NSLayoutConstraint activateConstraints:@[
                                               [self.searchView.topAnchor constraintEqualToAnchor:guide.topAnchor],
                                               [self.searchView.leadingAnchor constraintEqualToAnchor:guide.leadingAnchor],
                                               [self.searchView.trailingAnchor constraintEqualToAnchor:guide.trailingAnchor],
                                               [NSLayoutConstraint constraintWithItem:self.searchView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:44]
                                               ]];
  }

现在所有设备上的一切都很棒。希望这可以帮助其他类似问题的人。欢呼声。