A.导航栏搜索框
1.需求
  • 在“发现”页面,在顶部导航栏NavigationBar上添加一个搜索框
  • 左端带有“放大镜”图标
 
 
2.思路
  • 使用UISearchBar: 简单易用,但是样式死板不能定制(此处UISearchBar的背景色容易和导航栏的背景色混淆),而且在iOS6和iOS7上会产生不同的样式。
  • 使用UITextField创建:继承或者扩展UITextField,设置背景图和左端图标
 
==>由于是一个自定义的“新”控件,这里我们使用继承UITextField来实现
 
3.实现
  • 创建一个继承UITextField的类,这里命名为HVWSearchBar
  • 重写initWithFrame方法,用来初始化搜索框的图标、背景图片、图标和文字的对称方式、清除按钮的显示
  • 在需要的控制器上实例化HVWSearchBar,赋予其位置尺寸信息,添加到NavigationItem的titleView上
 
 //
// HVWSearchBar.m
// HVWWeibo
//
// Created by hellovoidworld on 15/2/2.
// Copyright (c) 2015年 hellovoidworld. All rights reserved.
// #import "HVWSearchBar.h" @implementation HVWSearchBar /** 使用代码创建控件的时候,调用init的时候会调用此方法 */
- (instancetype)initWithFrame:(CGRect)frame {
// 由于是重写方法,记得一定要先调用父类初始化方法
if (self = [super initWithFrame:frame]) {
// 设置内容垂直居中
[self setContentVerticalAlignment:UIControlContentVerticalAlignmentCenter]; // 设置背景图片(拉伸图片)
self.background = [UIImage resizedImage:@"searchbar_textfield_background"]; // 添加图标“放大镜“
UIImageView *searchBarIconView = [[UIImageView alloc] init];
searchBarIconView.image = [UIImage imageNamed:@"searchbar_textfield_search_icon"]; // 调整”放大镜”两边间距,view显示为正方形
searchBarIconView.width = searchBarIconView.image.size.width + ;
searchBarIconView.height = searchBarIconView.width; // 设置”放大镜“在imageView中居中
[searchBarIconView setContentMode:UIViewContentModeCenter]; // 设置textField的左部控件(”放大镜“所属的imageView)显示
[self setLeftViewMode:UITextFieldViewModeAlways]; // 设置图标到搜索栏
self.leftView = searchBarIconView; // 显示清除按钮
[self setClearButtonMode:UITextFieldViewModeAlways];
} return self;
} @end
 
实例化一个HVWSearchBar:
 - (void)viewDidLoad {
[super viewDidLoad]; // 添加搜索框
HVWSearchBar *searchBar = [[HVWSearchBar alloc] init];
searchBar.frame = CGRectMake(, , , );
self.navigationItem.titleView = searchBar;
}
 
 

[iOS微博项目 - 1.2] - 导航栏搜索框的更多相关文章

  1. [iOS微博项目 - 1.1] - 设置导航栏主题(统一样式)

    A.导航栏两侧文字按钮 1.需求: 所有导航栏两侧的文字式按钮统一样式 普通样式:橙色 高亮样式:红色 不可用样式:亮灰 阴影:不使用 字体大小:15   github: https://github ...

  2. iOS 删除黑色边框线导航栏&删除搜索框的阴影边界线和中黑色文本输入框 - 解

    删除黑色边框线导航栏 in viewDidload: [self.navigationController.navigationBar setBackgroundImage:[[UIImage all ...

  3. iOS开发笔记1:[转]导航栏里的"Back"按钮显示不出来

    最近项目中遇到一个问题,push过去的ViewController的Nav上面没有返回按钮,遂搜索资料,找到了以下文档.经测试i,问题解决. 原文地址:http://www.cnblogs.com/s ...

  4. iOS 超 Easy 实现 渐变导航栏

    接着上周的项目, 在上周我别出心裁的在自定义TabbarController中加入了自定义转场动画, 受到了大家广泛的喜爱, 再次表示感激, 今天我们继续实现LifestyleViewControll ...

  5. IOS开发之Bug--iOS7View被导航栏遮挡问题的解决

    在实际开发中,遇到在UITextView的frame等于当前控制器的View的frame的情况下,然后运行的时候,发现控制器的Frame的高度y值会从导航条的位置64变化到0. 导致UITextVie ...

  6. [iOS微博项目 - 3.4] - 获取用户信息

    github: https://github.com/hellovoidworld/HVWWeibo   A.获取用户信息 1.需求 获取用户信息并储存 把用户昵称显示在“首页”界面导航栏的标题上   ...

  7. [iOS微博项目 - 3.1] - 发微博界面

    github: https://github.com/hellovoidworld/HVWWeibo   A.发微博界面:自定义UITextView 1.需求 用UITextView做一个编写微博的输 ...

  8. [iOS微博项目 - 3.0] - 手动刷新微博

    github: https://github.com/hellovoidworld/HVWWeibo   A.下拉刷新微博 1.需求 在“首页”界面,下拉到一定距离的时候刷新微博数据 刷新数据的时候使 ...

  9. iOS:自定义工具栏、导航栏、标签栏

    工具栏为UIToolBar,导航栏UINavigationBar,标签栏UITabBar.它们的样式基本上时差不多的,唯一的一点区别就是,工具栏一般需要自己去创建,然后添加到视图中,而导航栏和标签栏不 ...

随机推荐

  1. uvaIrrelevant Elements

    唯一分解定理. 可以看出在最后每个a的系数是杨辉三角的第n行. 但是不能递推,否则会tle. 就从C(n-1,0)开始乘n-k再除以k.记录下每个的系数,如果该项系数小于m就代表和答案有关. 代码里的 ...

  2. 为什么多数游戏服务端是用 C++ 来写

    早年开发游戏必须用C++,这没得说,2000-2004年,java还没有nio,其他动态语言不抗重负,只能C/C++能开发出完整可用的游戏服务端.直到2005年,韩国的游戏很多都还是纯C++写服务端, ...

  3. string.Format 里面包含 javascript方法参数的时候 单引号变成双引号的问题解决方法

    解决方法如下 StringBuilder sb = new StringBuilder(); var str =@"<label><input type='checkbox ...

  4. POJ 3259 Wormholes 虫洞(负权最短路,负环)

    题意: 给一个混合图,求判断是否有负环的存在,若有,输出YES,否则NO.有重边. 思路: 这是spfa的功能范围.一个点入队列超过n次就是有负环了.因为是混合图,所以当你跑一次spfa时发现没有负环 ...

  5. Java [Leetcode 191]Number of 1 Bits

    题目描述: Write a function that takes an unsigned integer and returns the number of ’1' bits it has (als ...

  6. Delphi 2010 安装及调试

    呵呵,毫不客气地说,Delphi 2010 这个版本可以算是 Delphi 的一个“里程碑”,为什么这么说?因为这个版本实现了几个 Delphi 应该有却一直没有的功能 Delphi 2010 的新功 ...

  7. 在stm32上移植wpa_supplicant(二)

    第一层调用的移植和裁剪. wpa_supplicant_init 照论文的指示,删除wpa_params和wpa_global相关的东西.初始化流程也相当简单,driver初始化,eap_regist ...

  8. redis配置实例及redis.conf详细说明

    一.配置实例 1.redis修改持久化路径.日志路径.清缓存 redis修改持久化路径和日志路径 vim  redis.conf logfile /data/redis_cache/logs/redi ...

  9. EasyHook远注简单监控示例 z

    http://www.csdn 123.com/html/itweb/20130827/83559_83558_83544.htm 免费开源库EasyHook(inline hook),下面是下载地址 ...

  10. (转载) 数组a[]={3,5,2,4,1,8},要求从a中找出所有“和”等于10的子集

    背包问题.     不过就这道题目本身而言,由于集合a中只要6个元素,而不是成千上万,所以可以使用更直观的办法:     只要你能通过程序给出数组a中元素所组成的集合的所有的子集合(幂集),那么只需在 ...