zoukankan      html  css  js  c++  java
  • [iOS微博项目

    A.导航栏搜索框
    1.需求
    • 在“发现”页面,在顶部导航栏NavigationBar上添加一个搜索框
    • 左端带有“放大镜”图标
     
    Image(74)
     
    2.思路
    • 使用UISearchBar: 简单易用,但是样式死板不能定制(此处UISearchBar的背景色容易和导航栏的背景色混淆),而且在iOS6和iOS7上会产生不同的样式。
    • 使用UITextField创建:继承或者扩展UITextField,设置背景图和左端图标
     
    ==>由于是一个自定义的“新”控件,这里我们使用继承UITextField来实现
     
    3.实现
    • 创建一个继承UITextField的类,这里命名为HVWSearchBar
    • 重写initWithFrame方法,用来初始化搜索框的图标、背景图片、图标和文字的对称方式、清除按钮的显示
    • 在需要的控制器上实例化HVWSearchBar,赋予其位置尺寸信息,添加到NavigationItem的titleView上
     
     1 //
     2 //  HVWSearchBar.m
     3 //  HVWWeibo
     4 //
     5 //  Created by hellovoidworld on 15/2/2.
     6 //  Copyright (c) 2015年 hellovoidworld. All rights reserved.
     7 //
     8 
     9 #import "HVWSearchBar.h"
    10 
    11 @implementation HVWSearchBar
    12 
    13 /** 使用代码创建控件的时候,调用init的时候会调用此方法 */
    14 - (instancetype)initWithFrame:(CGRect)frame {
    15     // 由于是重写方法,记得一定要先调用父类初始化方法
    16     if (self = [super initWithFrame:frame]) {
    17         // 设置内容垂直居中
    18         [self setContentVerticalAlignment:UIControlContentVerticalAlignmentCenter];
    19        
    20         // 设置背景图片(拉伸图片)
    21         self.background = [UIImage resizedImage:@"searchbar_textfield_background"];
    22        
    23         // 添加图标“放大镜“
    24         UIImageView *searchBarIconView = [[UIImageView alloc] init];
    25         searchBarIconView.image = [UIImage imageNamed:@"searchbar_textfield_search_icon"];
    26        
    27         // 调整”放大镜”两边间距,view显示为正方形
    28         searchBarIconView.width = searchBarIconView.image.size.width + 10;
    29         searchBarIconView.height = searchBarIconView.width;
    30        
    31         // 设置”放大镜“在imageView中居中
    32         [searchBarIconView setContentMode:UIViewContentModeCenter];
    33        
    34         // 设置textField的左部控件(”放大镜“所属的imageView)显示
    35         [self setLeftViewMode:UITextFieldViewModeAlways];
    36        
    37         // 设置图标到搜索栏
    38         self.leftView = searchBarIconView;
    39        
    40         // 显示清除按钮
    41         [self setClearButtonMode:UITextFieldViewModeAlways];
    42     }
    43    
    44     return self;
    45 }
    46 
    47 @end
     
    实例化一个HVWSearchBar:
    1 - (void)viewDidLoad {
    2     [super viewDidLoad];
    3    
    4     // 添加搜索框
    5     HVWSearchBar *searchBar = [[HVWSearchBar alloc] init];
    6     searchBar.frame = CGRectMake(0, 0, 300, 40);
    7     self.navigationItem.titleView = searchBar;
    8 }
     
     
  • 相关阅读:
    分支可以类型的多态实现
    c#中使用了using自动释放资源,如果在using中被return或者异常终止,也会继续执行dispose函数的
    C# 数组的Clone
    pg_dump备份数据结构及数据
    SpringBoot使用MockMVC单元测试Controller
    Docker连接私服
    Windows安装Docker
    项目启动报错Failed to configure a DataSource: 'url' attribute is not specified and no embedde
    剑指Offer对答如流系列
    剑指Offer对答如流系列
  • 原文地址:https://www.cnblogs.com/hellovoidworld/p/4270163.html
Copyright © 2011-2022 走看看