UISeachBar之随心所欲

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值