iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 为什么我的UISearchBar在成为第一响应者之后的宽度为0?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_404_4@
@H_696_3@ 我的UIStackView中有一个UISearchBar,带有一个按钮,可以创建一个导航栏.这是它通常的样子:

ios – 为什么我的UISearchBar在成为第一响应者之后的宽度为0?


但当它成为第一响应者时,UISearchBar的宽度变为0,它看起来像这样

ios – 为什么我的UISearchBar在成为第一响应者之后的宽度为0?

现在唯一的约束是右边的UIButton的宽度是44pt,整个堆栈视图固定在屏幕的顶部和侧面.这是控制台打印出来的:

ios – 为什么我的UISearchBar在成为第一响应者之后的宽度为0?

我不太熟悉NSLayoutConsTraint,但显然有些东西与按钮上的44pt宽度约束相冲突.为什么UISearchbar的宽度变为0?

这是我的代码

override func didTransition(to presentationStyle: MSmessagesAppPresentationStylE) {
    if presentationStyle == .expanded {
        searchController.searchBar.becomeFirstResponder()
        searchController.searchBar.TintColor = UIColor.white
    }
}

func didDismissSearchController(_ searchController: UISearchController) {
    requestPresentationStyle(.compact)
}

override func viewDidLoad() {
    super.viewDidLoad()
    configureSearchController()
}

func configureSearchController() {
    searchController = UISearchController(searchResultsController: nil)
    searchController.dimsBACkgroundDuringPresentation = false
    searchController.searchBar.placeholder = "Search here..."
    searchController.searchBar.sizeToFit()
    searchController.searchBar.isTranslucent = false
    searchController.searchBar.delegate = self
    searchController.delegate = self
    searchController.searchBar.barTintColor = addButton.BACkgroundColor
    stackView.insertArrangedSubview(searchController.searchBar,at: 0)
    //This removes the hairline
    let color = addButton.BACkgroundColor
    searchController.searchBar.layer.borderWidth = 1
    searchController.searchBar.layer.borderColor = color?.cgColor

}

func searchBarShouldBeginEdiTing(_ searchBar: UISearchBar) -> Bool {
    if presentationStyle == .expanded {
        return true
    } else {
        requestPresentationStyle(.expanded)
        return false
    }
}

我的故事板按要求:

ios – 为什么我的UISearchBar在成为第一响应者之后的宽度为0?

@H_404_4@

解决方法

对于按钮前沿的输出显然有一个约束 – 但是你说你只限制了按钮的宽度.输出表示您将按钮的前沿约束到堆栈视图的前沿.

您当然可以将按钮的前沿限制在堆栈视图的前沿,并使按钮44变宽 – 如果按钮位于搜索栏的左侧.但是,因为按钮位于搜索栏的右侧,所以按钮可以是44宽或者可以约束到堆栈视图的前沿 – 但不能同时限制在两者之间.

因此,iOS打破了44宽度约束,并将按钮一直延伸到左侧,以便它与堆栈视图的前沿对齐.

这不一定是结果.我想Apple可以编程Xcode来忽略你拖动按钮的位置并且只是遵守约束,即移动按钮使其前缘和堆栈视图的前缘对齐,并给按钮宽度为44,因此将搜索栏移动到按钮右侧.但是,显然Apple更倾向于在水平堆栈视图中对项目的排序,即因为您将按钮放在搜索栏的右侧,这就是它保留的位置.

@H_404_4@ @H_404_4@
@H_404_4@
@H_404_4@
本图文内容来源于网友网络收集整理提供,作为学习参使用,版权属于原作者。

猜你在找的iOS相关文章

目前,苹果开发者账号可分为三种类型:个人、公司、企业,且三者的费用以及权限等不尽相同。 1.个人账号 费用:99 美元/年 协作人数:仅限开发者自己 不需要填写公司的邓百氏编码( D-U-N-S Nu
Symbol Value meaning NULL (void *)0 literal null value for C pointers nil (id)0 literal null value for Objective-C objects nil:对象为空定义某一实例对象为空值。例如:NSObject* obj = nil;if (...
Android篇环境要求1 安装winrar,然后配置winrar的环境变量,要用到winrar指令2 配置java的bin目录到环境变量,要用到jarsigner指令重签名步骤说明:1 从母包复制一个子包2 删除子包的签名文件META-INFO3 根据需要修改子包的文件,比如渠道号文件之类4 重签名子包对应的python脚本import os...
转载注明出处:https://blog.csdn.net/joosonmao/article/details/21172835刚接触iOS开发的人难免会对苹果的各种证书、配置文件等不甚了解,可能你按照网上的教程一步一步的成功申请了真机调试,但是还是对其中的缘由一知半解。这篇文章就对Certificate、Provisioning Profile等做个总结。 1.概念介绍如果你拥有一个开...
@L_616_35@
转载注明出处:https://www.jianshu.com/p/567d3b730608iOS armv7, armv7s, arm64区别与应用32位、64位配置历程2015年2月1日不允许不支持arm64的应用的提交; iOS10发布后,如果你的应用中使用到了32位的类、库,没有相应支持64位机型的库,则首次启动后会弹窗式提示:“ xxx可能使iPhone变慢...”; iO...
iOS9以下的自己越狱后,通过PP助手备份到电脑或者直接通过pp助手直接下载 
转载注明出处:https://www.cnblogs.com/mtystar/p/6082363.html0x01 静态库与动态库的区别1.静态库和动态库的存在形式上的区别静态库 .a .framework 动态库 .dylib (在Xcode 8里面,看到后缀为.tbd的库,它的本质都是.dylib文件) .framework 2.静态库和动态库在使用上的区别...
终端中运行xcodebuild -showsdks

大佬总结

以上是大佬教程为你收集整理的ios – 为什么我的UISearchBar在成为第一响应者之后的宽度为0?全部内容,希望文章能够帮你解决ios – 为什么我的UISearchBar在成为第一响应者之后的宽度为0?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。