簡體   English   中英

更改 UISearchBar 放大圖標顏色和位置

[英]Change UISearchBar magnify icon color and position

我有一個 UISearchBar,我想更改初始放大圖標的位置(出現在 UISearchBar 中間的那個)以及顏色或圖標。

到目前為止,我更改了色調和圖標圖像。

但是,只有當我在模擬器上測試應用程序時才會顯示新圖標,但在實際設備(均運行 iOS 9.3)上它仍然顯示默認圖標。

UISearchBar.appearance().setImage(UIImage(named: "SearchbarIcon"), forSearchBarIcon: UISearchBarIcon.Search, state: UIControlState.Normal)

至於放大圖標的位置,我希望它在左側,如果我激活 UISearchBar,它就會顯示在那里。

在此處輸入圖片說明

在此處輸入圖片說明

我在這里找到了很多答案,許多提供的解決方案不適用於 iOS 8.0+ 或在 Objective-C 中,我在理解它們時遇到了一些問題。

我試圖添加一個包含圖標的自定義背景,但它顯示在搜索欄的底部,而圖標仍然存在:

在此處輸入圖片說明

如果我將 Y 的背景偏移更改為 -44(UISearchBar 的高度),背景顯示正常,但我無法再輸入,因為似乎整個文本字段都被向上推了。 我還嘗試將 SearchText 的垂直偏移更改為 44 以進行補償,但沒有運氣。 老實說,我不確定“搜索文本”和“背景偏移”應該做什么,但我決定嘗試一下。

在此處輸入圖片說明

有什么辦法可以做到這一點嗎? 或者也許是一種不同的方法?

您可以使用調整搜索欄圖標的位置

func positionAdjustmentForSearchBarIcon(_ icon: UISearchBarIcon) -> UIOffset

請參閱https://developer.apple.com/library/ios/documentation/UIKit/Reference/UISearchBar_Class/#//apple_ref/occ/instm/UISearchBar/positionAdjustmentForSearchBarIcon

@Michael - 感謝所有幫助。 我設法抓住了 UISearchBar 的 UITextField:

func customizeSearchBar()
{
    for subview in srcRegimenSearchBar.subviews
    {
        for view in subview.subviews
        {
            if let searchField = view as? UITextField
            {
                let imageView = UIImageView()
                let image = UIImage(named: "SearchBarIcon.png")

                imageView.image = image;
                imageView.frame = CGRectMake(0, 0, 0, 0)

                /*imageView.frame = CGRectMake(100, 0, 20, 19)*/

                searchField.leftView = imageView
                searchField.leftViewMode = UITextFieldViewMode.Always
            }
        }
    }
}

我想更改位置,因為我可以訪問框架,但似乎只能修改頂部和高度,至少是我嘗試的方式,因此我將高度和寬度設置為 0(我找不到方法使其為零或完全刪除),我在 UISearchbar 的左側添加了一個帶有新圖標的 UIImageView,並為色調添加了自定義水平偏移。

不是最好的解決方案,我敢肯定,但現在它有效。

在此處輸入圖片說明

在此處輸入圖片說明

您可以使用:

uiSearchBar.setPositionAdjustment(UIOffset, for: UISearchBar.Icon)

替換UIOffset與期望的偏移值UIOffset(horizontal: CGFloatvertical: CGFloat)UISearchBar.Icon.search

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM