UISeachBar之随心所欲

来源:互联网 发布:怎样删自己的淘宝好评? 编辑:程序博客网 时间:2024/05/23 01:15

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就讲到这了,欢迎大家观临!也非常感谢大家指出不足之处。

0 0
原创粉丝点击