自定义UITextField

Ale*_*key 20 iphone uitextfield

我将如何创建UITextField像这个图像中的那个?

在此输入图像描述

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

Ant*_*tox 30

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

    UIImage *fieldBGImage = [[UIImage imageNamed:@"input.png"] stretchableImageWithLeftCapWidth:20 topCapHeight:20];
    [myUITextField setBackground:fieldBGImage];
Run Code Online (Sandbox Code Playgroud)

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

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

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


Ben*_*ran 20

您可能想要使用background和的borderStyle属性UITextField.设置borderStyleUITextBorderStyleNone并创建要拉伸并用作background属性的自定义背景图像将是一种方法.

我建议在UITextField类引用中查看这些属性.


Jam*_*far 17

你可以这样做:

yourTextField.borderStyle = UITextBorderStyleNone;

yourTextField.background = [UIImage imageNamed:@"email-input.png"];
Run Code Online (Sandbox Code Playgroud)

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

// 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;
Run Code Online (Sandbox Code Playgroud)


skw*_*hua 7

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

通过Interface Builder