首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

删除UISearchbar左侧的图像

删除UISearchBar左侧的图像可以通过以下方法实现:

  1. 首先,获取UISearchBar的子视图,这些子视图包括左侧的图像视图和搜索框文本字段等。
代码语言:swift
复制
func getSubviews(view: UIView) -> [UIView] {
    var subviews = [UIView]()
    for subview in view.subviews {
        subviews.append(subview)
        subviews.append(contentsOf: getSubviews(view: subview))
    }
    return subviews
}

let searchBar = UISearchBar()
let subviews = getSubviews(view: searchBar)
  1. 遍历子视图,找到左侧图像视图并将其删除。
代码语言:swift
复制
for subview in subviews {
    if let imageView = subview as? UIImageView, let image = imageView.image {
        if image.size.width == searchBar.height && image.size.height == searchBar.height {
            imageView.removeFromSuperview()
            break
        }
    }
}
  1. 最后,设置UISearchBar的searchFieldLeftPadding属性,以删除左侧的图像空间。
代码语言:swift
复制
extension UISearchBar {
    var searchField: UITextField? {
        return value(forKey: "searchField") as? UITextField
    }

    var searchFieldLeftView: UIView? {
        return searchField?.leftView
    }

    var searchFieldLeftPadding: CGFloat {
        get {
            return searchFieldLeftView?.frame.width ?? 0
        }
        set {
            let leftView = UIView(frame: CGRect(x: 0, y: 0, width: newValue, height: searchField?.frame.height ?? 0))
            searchField?.leftView = leftView
            searchField?.leftViewMode = .always
        }
    }
}

searchBar.searchFieldLeftPadding = 0

通过以上方法,可以删除UISearchBar左侧的图像,并且保留搜索框文本字段的功能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

自定义UISearchController的外观

以前我们在项目中使用搜索框的时候,如果用系统自带的控件则是使用UISearchDisplayController,而自从iOS8之后,系统重新给我们提供了一个搜索控件:UISearchController。在UISearchController中我们无需再自己初始化UISearchBar,只需要提供searchResult展示的视图。然而在开发中,我们往往需要根据项目的风格来改变UISearchBar的外观,通过继承的方式,我们可以完全定制符合项目风格的外观,然而有些情况下我们很难短时间内完成全部的外观定制工作,譬如我们项目用的好几个旧框架,代码中充斥着各种写好的UISearchBar的展示,而改动底层框架并不是一个较好地实践。于是我开始搜索并总结出了几个不通过继承的方式来更改UISearchBar外观的方法。

02

iOS界面布局的核心以及TangramKit介绍

TangramKit是iOS系统下用Swift编写的第三方界面布局框架。他集成了iOS的AutoLayout和SizeClass以及Android的五大容器布局体系以及HTML/CSS中的float和flex-box的布局功能和思想,目的是为iOS开发人员提供一套功能强大、多屏幕灵活适配、简单易用的UI布局解决方案。Tangram的中文即七巧板的意思,取名的寓意表明这个布局库可以非常灵巧和简单的解决各种复杂界面布局问题。他的同胞框架:MyLayout是一套用objective-C实现的界面布局框架。二者的主体思想相同,实现原理则是通过扩展UIView的属性,以及重载layoutSubviews方法来完成界面布局,只不过在一些语法和属性设置上略有一些差异。可以这么说TangramKit是MyLayout布局库的一个升级版本。大家可以通过访问下面的github站点去下载最新的版本:

03
领券