如何制作更圆润的 UITextField?就像 iPad 上 Safari 中的搜索栏
Posted
技术标签:
【中文标题】如何制作更圆润的 UITextField?就像 iPad 上 Safari 中的搜索栏【英文标题】:How can i make a more rounded UITextField? Like the search field in Safari on iPad 【发布时间】:2010-08-19 08:42:42 【问题描述】:您好,我正在尝试让 UITextField 看起来像 iPad 上 safari 应用程序中可用的 google 搜索字段。该字段的用途将相同(搜索框)。
我知道我可以使用 UISearchBar,但我必须使用 hackish 代码来摆脱放大镜图标和背景,我不希望这样。
我正在附加一张图片,其中苹果使用的 TextField 作为他们的搜索框。如何修改 UITextField 使其外观和行为类似于此屏幕截图中的搜索字段?
我尝试修改 UITextField 的 layer roundedCorners 属性,但这并没有按预期工作。
非常感谢任何帮助!
谢谢!
【问题讨论】:
在玩roundedCorners 时,您是否确保已添加quartzcore 框架以及将必要的头文件导入到您的ViewController 子类中? 【参考方案1】:您可以在任何 UIView-Subclass 上设置 Corner-Radius。
-
将 QuartzCore.framework 添加到您的项目中
在您的 UIViewController 子类中添加
#import <QuartzCore/QuartzCore.h>
(您可以在其中访问您选择的 UITextfield 实例
在 viewDidLoad / viewWillAppear(或任何其他你的 UITextfield 已经实例化的地方调用[yourTextField.layer setCornerRadius:14.0f];
调整cornerRadius 值直到看起来不错
【讨论】:
虽然这是获得圆角的好方法,但您不会得到他所展示的确切外观和感觉。特别是阴影。【参考方案2】:使用下面的代码。它适用于我:
searchField= [[UITextField alloc] initWithFrame:CGRectMake(0,0,150,31)];
searchField.delegate = self;
searchField.autoresizingMask = UIViewAutoresizingFlexibleWidth;
searchField.textColor = [UIColor colorWithRed:102.0/255 green:102.0/255 blue:102.0/255 alpha:1.0];
searchField.textAlignment = UITextAlignmentLeft;
searchField.font = [UIFont fontWithName:@"Helvetica" size:15];
searchField.autocorrectionType = UITextAutocorrectionTypeNo;
searchField.contentVerticalAlignment =UIControlContentVerticalAlignmentCenter;
searchField.clearsOnBeginEditing = NO;
searchField.autocapitalizationType = UITextAutocapitalizationTypeNone;
searchField.autocorrectionType = UITextAutocorrectionTypeNo;
searchField.keyboardType = UIKeyboardTypeURL;
searchField.returnKeyType = UIReturnKeySearch;
searchField.clearButtonMode = UITextFieldViewModeWhileEditing;
searchField.rightViewMode = UITextFieldViewModeUnlessEditing;
searchField.layer.cornerRadius = 17;
searchField.placeholder=@"Google Search";
searchField.borderStyle = UITextBorderStyleRoundedRect;//To change borders to rounded
searchField.layer.borderWidth = 1.0f; //To hide the square corners
searchField.layer.borderColor = [[UIColor grayColor] CGColor]; //assigning the default border color
UIBarButtonItem *searchFieldItem = [[UIBarButtonItem alloc] initWithCustomView:searchField];
【讨论】:
【参考方案3】:将 UITextField 的背景属性设置为适当的图像,例如:
【讨论】:
在这种情况下,如果对齐设置为向右或向左,文本将过于靠近侧面。【参考方案4】:您为什么不尝试一个技巧,为您需要的输入字段制作单独的图像并将其放置在真正的 textField 控件下。但是,您必须操纵要放置的 textField 的颜色以使其透明。
【讨论】:
【参考方案5】:使用具有所需圆角边缘的图形,然后在顶部放置一个 textview。
【讨论】:
感谢您的回复,但我不认为苹果在构建该功能时使用了类似的东西。以上是关于如何制作更圆润的 UITextField?就像 iPad 上 Safari 中的搜索栏的主要内容,如果未能解决你的问题,请参考以下文章
如何制作字幕 UILabel / UITextField / NSTextField