UITableView 在激活和停用 UISearchController 时在位置之间跳转
UITableView jumps between positions when activating and deactivating UISearchController
我最近在我的 table 视图中添加了一个 UISearchController,但我遇到了动画问题。当搜索栏被点击并变为活动状态时,table 视图会跳起来以满足搜索控制器的新(活动)位置。这个问题是搜索控制器动画到这个新位置,但 table 视图没有,所以它很不和谐。 Here is a video 的问题。
table 视图的顶部约束设置为视图控制器的安全区域。下面是我为配置搜索控制器而编写的代码:
- (void)configureSearchController {
UISearchController *searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
searchController.searchResultsUpdater = self;
searchController.obscuresBackgroundDuringPresentation = NO;
searchController.searchBar.placeholder = @"Search for any cryptocurrency";
self.searchController = searchController;
if (@available(iOS 11.0, *)) {
self.navigationItem.searchController = searchController;
} else {
self.navigationItem.titleView = searchController.searchBar;
}
self.definesPresentationContext = YES;
}
有没有人对我如何顺利过渡有任何建议?理想情况下,我希望 table 视图以与搜索控制器相同的速度向上移动,因为这是整个 iOS.
的默认行为
从视频中我认为 table 视图没有延伸到导航栏下方。如果你真的允许它这样做,你可能可以避免这种跳跃。
你还应该设置
tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentAutomatic
使其contentInsets自动调整。
我认为,安全区域的顶部约束问题。 SearchController 在更新其导航栏位置时无法更新表格视图框架。因此,如果您可以将 tableview 的顶部约束设置为 superview,动画可能会很流畅。如下设置您的表格视图约束:
希望它能奏效!
在尝试 UITableView
和 UIViewController
属性的各种组合后找到了解决方案。
我只需要将 Extends Edges Under Top Bars
设置为 false,同时将 UITableView
限制在安全区域的顶部。动画现在很流畅并且按照您预期的那样 UISearchController
。
我最近在我的 table 视图中添加了一个 UISearchController,但我遇到了动画问题。当搜索栏被点击并变为活动状态时,table 视图会跳起来以满足搜索控制器的新(活动)位置。这个问题是搜索控制器动画到这个新位置,但 table 视图没有,所以它很不和谐。 Here is a video 的问题。
table 视图的顶部约束设置为视图控制器的安全区域。下面是我为配置搜索控制器而编写的代码:
- (void)configureSearchController {
UISearchController *searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
searchController.searchResultsUpdater = self;
searchController.obscuresBackgroundDuringPresentation = NO;
searchController.searchBar.placeholder = @"Search for any cryptocurrency";
self.searchController = searchController;
if (@available(iOS 11.0, *)) {
self.navigationItem.searchController = searchController;
} else {
self.navigationItem.titleView = searchController.searchBar;
}
self.definesPresentationContext = YES;
}
有没有人对我如何顺利过渡有任何建议?理想情况下,我希望 table 视图以与搜索控制器相同的速度向上移动,因为这是整个 iOS.
的默认行为从视频中我认为 table 视图没有延伸到导航栏下方。如果你真的允许它这样做,你可能可以避免这种跳跃。
你还应该设置
tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentAutomatic
使其contentInsets自动调整。
我认为,安全区域的顶部约束问题。 SearchController 在更新其导航栏位置时无法更新表格视图框架。因此,如果您可以将 tableview 的顶部约束设置为 superview,动画可能会很流畅。如下设置您的表格视图约束:
希望它能奏效!
在尝试 UITableView
和 UIViewController
属性的各种组合后找到了解决方案。
我只需要将 Extends Edges Under Top Bars
设置为 false,同时将 UITableView
限制在安全区域的顶部。动画现在很流畅并且按照您预期的那样 UISearchController
。