如何在 iOS 7 的 UITextField 中添加带有缩进的图像 UIImage?

Posted

技术标签:

【中文标题】如何在 iOS 7 的 UITextField 中添加带有缩进的图像 UIImage?【英文标题】:How to add image UIImage with indent in UITextField in iOS 7? 【发布时间】:2014-09-23 10:26:14 【问题描述】:

我有一个UITextField,我想在其中添加一个图像到左侧。我使用在UITextFieldleftView 属性中设置的UIImageView 执行此操作。图像在图像视图中调整为适当的大小。问题是它粘在边界上。如何设置图像的左缩进。我想一种解决方案是在图像的左侧设置一些空白区域,但我想使用缩进。另外我想在图片后缩进一些,所以文字不是那么接近它。

我使用以下代码:

[textField setLeftViewMode:UITextFieldViewModeAlways];

UIImageView *imageView1 = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 37, 20)];
imageView1.image = [UIImage imageNamed:@"custom_image"];
textField.leftView = imageView1;

【问题讨论】:

而不是子查看,将文本文件(无边框)放在图像视图上 【参考方案1】:

您可以将 UIImageview 框架设置为比原始 UIImage 更多,并将 UIImageview contentMode 属性设置为 center。 请参考下面的答案。

UIImageView *imgSearch=[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 32, 28)]; // Set frame as per space required around icon
[imgSearch setImage:[UIImage imageNamed:@"search.png"]];

[imgSearch setContentMode:UIViewContentModeCenter];// Set content mode centre

self.tfSearch.leftView=imgSearch;
self.tfSearch.leftViewMode=UITextFieldViewModeAlways;

【讨论】:

【参考方案2】:

您需要子类 UITextField 并在其中实现

- (CGRect)leftViewRectForBounds:(CGRect)bounds

【讨论】:

【参考方案3】:

也许你应该有一个子类 UITextField 并覆盖

- (CGRect)leftViewRectForBounds:(CGRect)bounds;
- (void)drawTextInRect:(CGRect)rect;

这些将改变 leftView 的矩形。

【讨论】:

以上是关于如何在 iOS 7 的 UITextField 中添加带有缩进的图像 UIImage?的主要内容,如果未能解决你的问题,请参考以下文章

iOS 7获取UITextField默认层

如何为 iOS 7 创建弹出式 uipicker 和 uitextfield?

UITextField右对齐iOS 7

UITextField - (void)drawPlaceholderInRect:(CGRect)rect 在 iOS 7 中返回不同的 CGRect 高度

UITextfield 在 iOS 7 中不能作为 UISearchBar 的子视图?

右对齐 UITextField 空格键在 iOS 7 中不前进光标