我使用UITextfield作为搜索字段,以允许用户过滤内容。当用户打开UI时,UITextField将在文本字段的中心显示占位符消息“search”。我想在占位符文本之前添加一个leftview图标(参见下面的代码)。 leftwiew图标将显示在文本字段的最左侧。我想把它放在正文之前。我怎样才能找到合适的位置?
searchText.placeholder = "Search"
searchText.leftView = UIImageView(image: UIImage(named: "cion_03.png"))
searchText.leftView?.contentMode = .ScaleAspectFit
searchText.leftViewMode = .Always
答案 0 :(得分:2)
您忘了为视图设置框架。尝试为您的图像设置正确的x
位置。
let icon = UIImageView(image: UIImage(named: "cion_03"))
icon.frame = CGRectMake(0.0, 0.0, icon.image.size.width+10.0, icon.image.size.height);
icon.contentMode = UIViewContentMode.Center
self.textField.leftView = icon;
self.textField.leftViewMode = UITextFieldViewMode.Always
答案 1 :(得分:2)
对于此级别的自定义,最好的选择是继承UITextField
。您将能够修改占位符文本的框架,以修改其位置。
您应该覆盖placeholderRectForBounds:
。更改后,您可能会发现需要覆盖textRectForBounds:
以匹配占位符文本位置。
我已经看到这种方法成功使用,以适应某些字体。
答案 2 :(得分:0)
我花了一天的时间尝试使用UITextField子类。得到它主要工作但我还需要在编辑时将文本对齐从居中更改为左对齐。我最终通过将图像视图约束到文本字段的前面来解决这个问题,并且效果很好。我甚至能够来回制作它们的所有内容。