IOS 13:UITextField rightView的间距问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IOS 13:UITextField rightView的间距问题相关的知识,希望对你有一定的参考价值。
我在ios 13中使用UITextField的右视图面临间距问题,请参阅我的以下代码和ios 13和ios 12.4的屏幕截图
在IOS 12.4模拟器中,UITextField的右视图(UIButton)中显示适当的空间
在IOS 13.0中,模拟器的UITextField的右视图(UIButton)中存在间距问题
let dropdownButton = UIButton(frame: CGRect(x: 0, y: 0, width: 50, height: txtField.frame.height))
dropdownButton.backgroundColor = UIColor.clear
dropdownButton.setImage(UIImage(named: "ic_DownArrow"), for: UIControl.State())
txtField.rightView = dropdownButton
txtField.rightViewMode = .always
摘自iOS&iPadOS 13 Developer Beta 5发行说明:
UIKit-已解决的问题在iOS 13之前,UITextField假定在分配时已正确设置其leftView和rightView的帧,并且不会改变。从iOS 13开始,leftViewRect(forBounds :)和rightViewRect(forBounds :)的实现现在向视图询问其systemLayoutSizeFitting(:)。要实现与iOS 13链接并在iOS 13上运行时的先前行为,请在视图上添加显式的大小限制,将其包装在纯UIView中,或者将视图子类化并实现systemLayoutSizeFitting(:)。 (51787798)
因此,将自动布局约束添加到添加到rightView的自定义视图中
width: 50, height: txtField.frame.height
,因此缩小了按钮。您可以尝试添加一些容器:
let dropdownButton = UIButton(frame: CGRect(x: 0, y: 0, width: 50, height: txtField.frame.height))
dropdownButton.backgroundColor = .clear
dropdownButton.setImage(UIImage(named: "ic_DownArrow"), for: UIControl.State())
let container = UIView(frame: dropdownButton.frame)
container.backgroundColor = .clear
container.addSubview(dropdownButton)
txtField.rightView = container
txtField.rightViewMode = .always
1)创建一个容器视图,并使用自动布局设置其宽度和高度。宽度和高度应包括子视图的大小+所需的间距。
2)创建要在文本字段中显示的子视图。使用自动布局设置宽度,高度和布局。将其添加到容器视图。
3)将容器视图添加到文本字段中>
您可以看到我的容器与文本字段的高度匹配。宽度是按钮的宽度(44),加上我想要的间距(16)。添加子视图时,将其对齐到容器的左侧。这将使我在按钮的右侧和文本字段的边缘之间有16px的间距。
let forgotButtonContainer = UIView()
forgotButtonContainer.translatesAutoresizingMaskIntoConstraints = false
forgotButtonContainer.widthAnchor.constraint(equalToConstant: 44.0 + 16.0).isActive = true
forgotButtonContainer.heightAnchor.constraint(equalToConstant: 48.0).isActive = true
forgotButton = PFSecondaryButton(link: "Forgot?")
forgotButton.translatesAutoresizingMaskIntoConstraints = false
forgotButtonContainer.addSubview(forgotButton)
forgotButton.topAnchor.constraint(equalTo: forgotButtonContainer.topAnchor).isActive = true
forgotButton.leftAnchor.constraint(equalTo: forgotButtonContainer.leftAnchor).isActive = true
forgotButton.bottomAnchor.constraint(equalTo: forgotButtonContainer.bottomAnchor).isActive = true
passwordField.rightView = forgotButtonContainer
以上是关于IOS 13:UITextField rightView的间距问题的主要内容,如果未能解决你的问题,请参考以下文章
iOS 13:带有 LeftView 间距问题的 UITextField - Xcode 11
ios更新完ios13出现的UItextField出现的app崩溃问题
ios更新完ios13出现的UItextField出现的app崩溃问题
更新到 iOS 13 后 UISearchController UITextField 背景不显示白色
添加到 UITableViewCell 的 contentView 的 UITextField 在 Popover 中无法正确显示(iPad、iOS 4.2)