如何制作更圆润的 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 中的搜索栏的主要内容,如果未能解决你的问题,请参考以下文章

如何让我的单元格像 App Store 中一样圆润

如何制作字幕 UILabel / UITextField / NSTextField

如何在 UItableViewCell 内制作可滚动的 UITextField?

在 UITextField 中添加逗号作为用户类型的数值

制作一个圆角的 UITextField

在 Unity 中平滑动态生成的网格?