是否可以更改搜索栏中取消按钮的垂直位置?

Is it possible to change the vertical position of cancel button in the search bar?

当我将应用程序从 10 更新到 11 iOS SDK 时,我在 UIViewController 中将搜索栏从 UIView 移到了 navigationItem。 此外,我设置了在 UISearchBar 中使用垂直偏移定位背景图像,因为徽标和搜索栏之间的距离很小。

searchBar.setSearchFieldBackgroundImage(searchFieldImage, for: .normal)
searchBar.searchFieldBackgroundPositionAdjustment = UIOffset(horizontal: 0, vertical: 4)

但我无法将“取消”按钮放置在垂直位置。如何设置 UISearchBar 中的取消按钮或按钮中的标题的垂直位置?

您可以增加搜索栏高度heightAnchor.constraint以增加导航栏高度以解决图像徽标问题,检查它

在IOS11

searchController.searchBar.heightAnchor.constraint(equalToConstant: 50).isActive = true

访问取消按钮如下:-

UIBarButtonItem *cancelButton = [UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil];

现在尝试更新cancelButton的框架(y轴)。

let cancelButton = UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self])
let offset = UIOffset(horizontal: 0, vertical: 7)
cancelButton.setTitlePositionAdjustment(offset, for: .default)

也看看苹果文档 here