swift UISearchBar自定义角点

kokeuurv  于 2023-03-16  发布在  Swift
关注(0)|答案(6)|浏览(204)

我正在尝试创建一个搜索栏,如下所示:

但是我注意到我可能要用我自己的图片来替换搜索栏,因为当我设置时,搜索栏的边角出现了错误:

self.searchController.searchBar.layer.cornerRadius = 50 // I've tried other numbers besides this too with no luck
self.searchController.searchBar.clipsToBounds = true

如果我设置这个:

self.searchController.searchBar.layer.cornerRadius = self.searchController.searchBar.bounds.height/2

搜索栏如下所示:

但还是和图像不太一样。
有没有一种方法可以将文本域的左右两边替换为图像,这样我就可以使用自定义搜索栏中的圆角了?

5gfr0r5j

5gfr0r5j1#

我正在使用此代码UISearchBar,但您可以将此代码与UISearchController一起使用。

let searchBar = UISearchBar()
                searchBar.sizeToFit()
                searchBar.placeholder = "Search"
                navigationItem.titleView = searchBar

                if let textfield = searchBar.value(forKey: "searchField") as? UITextField {
                    textfield.textColor = UIColor.blue
                    if let backgroundview = textfield.subviews.first {
                        // Background color
                        backgroundview.backgroundColor = UIColor.white
                        // Rounded corner
                        backgroundview.layer.cornerRadius = 14;
                        backgroundview.clipsToBounds = true;
                    }
                }
disbfnqx

disbfnqx2#

您应该在UISearchBar中更改searchTextField的半径。
你可以这样做:

searchBar.searchTextField.layer.cornerRadius = 20
searchBar.searchTextField.layer.masksToBounds = true
  • searchBar是故事板中UISearchBar的一个出口
dldeef67

dldeef673#

这里的问题是你在UISearchBar上设置了圆角半径,而不是在它里面设置UITextField。你可以做一些破解来获得UITextField,但这并不是真正推荐的。
正如您在问题中提到的,您需要使用自定义图像和下面显示的方法:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UISearchBar_Class/#//apple_ref/doc/uid/TP40007529-CH3-SW40

hk8txs48

hk8txs484#

这是为我工作在swift 3 iOS 10:

searchController.searchBar.layer.cornerRadius = 20
    searchController.searchBar.clipsToBounds = true

dauxcl2d

dauxcl2d5#

搜索栏视图的快捷方式
用于子视图和弹出窗口[Swift 5]

override func layoutSublayers(of layer: CALayer) {
    searchBarPopup.clipsToBounds = true
    searchBarPopup.layer.cornerRadius = 10
    searchBarPopup.layer.maskedCorners = [ .layerMaxXMinYCorner, .layerMinXMinYCorner]
}

im9ewurl

im9ewurl6#

如果有人无法在某些设备上使用此功能,请确保您没有在搜索栏中设置字体。自定义字体会出于某种原因影响半径。对我来说,iPhone 13 Pro Max没有问题,而iPhone 13 Pro的半径则是奇怪的矩形。

相关问题