21世纪是一个讲个性的时代,有个性才可能引领时代的潮流。个性说到底还是创新,只有不断的创新,我们才能够脱颖而出。那么想要设计一款好的搜索框,就必需具有它独特的风格。就控件来说,就需要一定的可操作性,能够根据自己的思维灵活变幻。下面我就来介绍一下如何打造一款属于自己的UISearchBar:
首先我们简单来了解一下它的结构,它大致包含两部分:UISearchBarBackGround和UITextField.
1.UISearchBarBackGround与UISearchBar的背景相关联的,通过改动UISearchBarBackGround,我们可以实现对UISearchBar背景的修改,一般来说这样的思维毫无疑问是正确的。但是有一点我们需要注意,IB中是没有直接操作背景的属性。所以我们一般是把它移除的。要移除它,首先就得定位它。通过下面的方法我们可以直接定位到它,并把它移除。
for (UIView *backgroundViewinself.subviews) {
if ([backgroundViewisKindOfClass:NSClassFromString(@"UISearchBarBackground")]) {
[backgroundViewremoveFromSuperview];
}
}
2.有时候我们使用系统的UISeachBar时,会感觉到它的属性比较单一,不符合在某种场景下使用。比如它的颜色,它的图片等等。不能满足我们的需求时,那么我们就需要对它进行拓展。除去UISearchBarBackGround,那么就剩下UITextField可供操作了。首先我们应该获取到属于UITextField那部份。
UITextField *customField;
NSInteger subViewNum = [self.subviewscount];
for (int i =0; i < subViewNum; i++) {
if ([[self.subviewsobjectAtIndex:i]isKindOfClass:[UITextFieldclass]]) {
customField = [self.subviewsobjectAtIndex:i];
}
}
//如果上面的方法找不到searchField,那就试试下面的方法吧
if (customField ==nil) {
NSArray *SubViewArray = [self subviews];
UIView *sview = [SubViewArrayobjectAtIndex:0];
NSArray *viewArray = [sviewsubviews];
for (int i =0; i < arrayView.count; i++) {
if ([[viewArray objectAtIndex:i]isKindOfClass:[UITextField class]]) {
customField = [viewArrayobjectAtIndex:i];
}
}
}
获取到了UITextField那部分后,我们就可以很容易的对编辑框内的属性进行修改。
A.通过修改UITextField的BackGround属性我们可以达到修改编辑框背景
B.通过修改UITextField的TextColor属性我们可以达到修改编辑框内搜索字体的颜色
C.通过修改UITextField的placeholderTextColor属性我们可以达到修改占位符的字体颜色
D.我们还可以修改编辑框内的搜索图标:
UIImage *searchimage = self.searchImage; UIImageView *searchimageView = [[UIImageView alloc] initWithImage:searchimage]; searchimageView.frame = CGRectMake(0, 0, 15, 15); customField.leftView = searchimageView;
打开iPhone的通讯录,点击搜索框,会出现一层半透明的试图(我个人称之为“遮盖层”)。这在开发过程是很常见的,大家或多或少都会用到吧。它是如何实现的呢,实现的方法多种多样吧,初期时我使用的UIView,现在我来介绍一种更加方便,实用的方法-UIButton.
//创建遮盖层 coverView = [[UIButton alloc] initWithFrame:CGRectMake(0, 64,SCREEN_WIDTH, SCREEN_HEIGHT)]; [coverView setBackgroundColor:[UIColor blackColor]]; [coverView setAlpha:0.5f]; [coverView addTarget:self action:@selector(Click:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:coverView]; //实现遮盖层的点击事件 - (void)Click:(UIButton *)btn{ [self coveringView:0]; } //遮盖层效果变幻 - (void)coveringView:(float)alphaValue{ [UIView animateWithDuration:0.2 animations:^{ [coverView setAlpha:alphaValue]; } completion:^(BOOL finished) { if (alphaValue<=0) { [customSearchBar resignFirstResponder]; [customSearchBar setShowsCancelButton:NO animated:YES]; [self.navigationController setNavigationBarHidden:NO animated:YES]; } }]; }
UISearchBar就讲到这了,欢迎大家观临!也非常感谢大家指出不足之处。