自定义UITextField

时间:2011-02-23 17:59:12

标签: iphone uitextfield

如何创建与此图片中的UITextField类似的文件?

enter image description here

它看起来略大,特别是高度。

6 个答案:

答案 0 :(得分:30)

使用可伸缩图像可以做得更好更简单:

    UIImage *fieldBGImage = [[UIImage imageNamed:@"input.png"] stretchableImageWithLeftCapWidth:20 topCapHeight:20];
    [myUITextField setBackground:fieldBGImage];

将文本字段的背景视为分为三个部分。一个中间部分,可以拉伸和盖在两端。创建一个只需要足够长的图像来包含此重复部分的一个像素(一个非常短的文本字段),然后使用stretchableImageWithLeftCapWidth: topCapHeight从中创建一个可伸缩的图像。将左端盖的宽度传递给'leftCapWidth'。您也可以将其垂直拉伸,但如果您的背景图像与文本框的高度相同,则不会产生影响。

如果您熟悉Flash或Illustrator中的9切片缩放,那么它的概念完全相同,只是中间部分只有一个像素宽/高。

这样做的好处是您不必担心多个分层对象一起缩放,您可以随时调整文本字段的大小,并保持背景。它也适用于其他元素!

答案 1 :(得分:20)

您可能希望使用background的{​​{1}}和borderStyle属性。将UITextField设置为borderStyle并创建要拉伸并用作UITextBorderStyleNone属性的自定义背景图像将是一种方法。

我建议您查看UITextField class reference中的这些属性。

答案 2 :(得分:17)

您可以通过以下方式执行此操作:

yourTextField.borderStyle = UITextBorderStyleNone;

yourTextField.background = [UIImage imageNamed:@"email-input.png"];

如果您想在文本字段中为文本添加边距,可以通过以下方式执行此操作:

// Setting Text Field Margins to display the user entered text Properly

UIView *paddingView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 5, 20)];

yourTextField.leftView = paddingView;
yourTextField.leftViewMode = UITextFieldViewModeAlways;

答案 3 :(得分:7)

您也可以通过Interface Builder执行此操作。

Through Interface Builder

答案 4 :(得分:2)

只需使用以下行,它就可以正常工作

  

textfield_name.background = [UIImage imageNamed:@“yourImage.png”];

这里,“yourImage”是你要设置的背景图片......

但是,只有当您的按钮不是圆形按钮时才会起作用。因此,您可以在界面生成器中更改按钮的类型,或者可以使用

  

textfield_name.borderstyle = UITextBorderStyleNone或UITextBorderStyleBezel

你和gud2go ....!

答案 5 :(得分:2)

将uiimageview的图像属性设置为uitextfield背景所需的图像。在这个uiimageview的顶部放置一个带bordertyle的uitextfield。您可以直接在界面构建器中执行此操作。