1. 程式人生 > >iOS搜尋框樣例

iOS搜尋框樣例

每個App的搜尋介面下邊都會有熱門搜尋,歷史搜尋之類的標籤,這裡介紹個框架,

可以非常容易實現標籤類的不規則流式佈局,也可以實現固定寬度和高度的佈局,也

支援Autolayout,使用起來也是非常舒服。SKTagView原框架下只有根據文字寬度不固

定的的模式,那麼如果需求有固定寬高模式的,老規矩,只能改原始碼了.

請看圖:


傳統模式:


TableView cell模式的不規則模式和固定寬高模式:

   

電影放完了,開始簡單介紹下

這裡有兩個能用到的地方(截圖來自淘寶)

   

OK,根據以上兩個用途,寫了兩個簡單的Demo,無需再繁瑣的計算了,直接匯入

SKTagView來進行佈局,非常簡單

Demo1

首先:

建立一個UISearchBar來進行模擬搜尋

  1. - (void)viewDidLoad {  
  2.     [super viewDidLoad];  
  3.     // Do any additional setup after loading the view from its nib.
  4.     UIView *titleView = [[UIView alloc] initWithFrame
    :CGRectMake(0037544)];  
  5.     titleView.backgroundColor = [UIColor clearColor];  
  6.     self.searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0036044)];  
  7.     self.searchBar.delegate = self;  
  8.     self.searchBar.placeholder = @"請輸入要搜尋的文字";  
  9. //    self.searchBar.showsCancelButton = YES;
  10.     // 鍵盤確認按鈕的名字
  11.     self.searchBar.returnKeyType = UIReturnKeyNext;  
  12.     // 把預設灰色背景浮層給去掉
  13.     self.searchBar.backgroundColor = [UIColor clearColor];  
  14.     self.searchBar.backgroundImage = [UIImage new];  
  15.     UITextField *searBarTextField = [self.searchBar valueForKey:@"_searchField"];  
  16.     if (searBarTextField)  
  17.     {  
  18.         [searBarTextField setBackgroundColor:[UIColor colorWithRed:243/255.0 green:243/255.0 blue:243/255.0 alpha:1]];  
  19.         searBarTextField.borderStyle = UITextBorderStyleRoundedRect;  
  20.         searBarTextField.layer.cornerRadius = 5.0f;  
  21.     }  
  22.     else
  23.     {  
  24.         // 通過顏色畫一個Image出來
  25.         UIImage *image = [UIImage imageWithColor:[UIColor colorWithRed:243/255.0 green:243/255.0 blue:243/255.0 alpha:1] forSize:CGSizeMake(2828)];  
  26.         [self.searchBar setSearchFieldBackgroundImage:image forState:UIControlStateNormal];  
  27.     }  
  28.     [titleView addSubview:self.searchBar];  
  29.     self.navigationItem.titleView = titleView;  
  30.     [self.searchBar becomeFirstResponder];  
  31.     [self configTagView];  
  32. }  

來看看效果哈


但是你們有沒有覺得他右邊的Cancel一點都協調麼,要改了它,但是這東西

系統又沒有給屬性介面讓你改......


那麼試著咱們把SearchBar下面的Subviews統統打印出來看一下


咦???這個數組裡面只有個UIView麼,不科學啊,要不再撥開一層看看


NICE啊,這波操作可以啊,找到了,藏那麼裡面,既然找到了,就在這個代理方法裡面進行修改

  1. - (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar{  
  2. //    (lldb) po self.searchBar.subviews[0].subviews
  3. //    <__NSArrayM 0x7ffba1e08330>(
  4. //                                <UISearchBarBackground: 0x7ffba1c670e0; frame = (0 0; 360 44); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x7ffba1c201a0>>,
  5. //                                <UISearchBarTextField: 0x7ffba1c905b0; frame = (0 0; 0 0); text = ''; clipsToBounds = YES; opaque = NO; layer = <CALayer: 0x7ffba1c90360>>,
  6. //                                <UINavigationButton: 0x7ffba1c982c0; frame = (0 0; 53 30); opaque = NO; layer = <CALayer: 0x7ffba1c98800>>
  7. //                                )
  8. //    
  9. //    (lldb) po self.searchBar.subviews
  10. //    <__NSArrayM 0x7ffba1e77280>(
  11. //                                <UIView: 0x7ffba1c8a470; frame = (0 0; 360 44); clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0x7ffba1c7ddc0>>
  12. //                                )
  13.     searchBar.showsCancelButton = YES;  
  14.     for(UIView *view in  [[[searchBar subviews] objectAtIndex:0] subviews]) {  
  15.         if([view isKindOfClass:[NSClassFromString(@"UINavigationButton") class]]) {  
  16.             UIButton * cancel =(UIButton *)view;  
  17.             [cancel setTitle:@"搜尋" forState:UIControlStateNormal];  
  18.             cancel.titleLabel.font = [UIFont systemFontOfSize:14];  
  19.             cancel.tintColor = [UIColor redColor];  
  20.         }  
  21.     }}  

修改完後的效果(Mac這截圖效果也是醉了

然後

我們來建立SKTagView,各種屬性已經加上註釋

  1. // 配置
  2. - (void)configTagView  
  3. {  
  4. 相關推薦

    iOS搜尋

    每個App的搜尋介面下邊都會有熱門搜尋,歷史搜尋之類的標籤,這裡介紹個框架, 既可以非常容易實現標籤類的不規則流式佈局,也可以實現固定寬度和高度的佈局,也 支援Autolayout,

    基於轉角數為基準的廣度優先搜尋:連連看)

    c++作業,設計一個簡單的連連看程式,建立一個 圖 ,然後每次輸入兩個座標,判斷是否可以消除,初次寫覺得廣搜可以完成(事實證明的確可以),但是略有些麻煩,本來想看老師的程式碼的,結果一下整個600來行的簡單模擬(八種情況,分別嘗試),太麻煩了,就查詢這方面的資料,《程式設計之

    iOS搜尋功能的實現/UISearchBar/UISearchController的使用,搜尋控制器框架

    搜尋控制器框架 搜尋框功能的實現方法有多種: 1.使用UITextField自己封裝; 2.UISearchBarController 3.UISearchBar =========================== 舉例一:searchBarCon

    iOS搜尋的實現

    搜尋框是我們在實際開發中比較常用到的控制元件之一,可以說幾乎每一個應用程式中都會使用到搜尋框,例如QQ、微信等都用到了搜尋框 iOS中的搜尋框實現起來相對簡單一點,實現方法大致有iOS8.0之前的利用UISearchBar和UIDisplayController實現,這

    最簡單的基於FFmpeg的移動端IOS HelloWorld

    目的 mes 真機 roo mux 能夠 ted 配置 details =====================================================最簡單的基於FFmpeg的移動端樣例系列文章列表:最簡單的基於FFmpeg的移動端樣例:An

    最簡單的基於FFmpeg的移動端IOS 視頻解碼器

    視頻播放 contex avcodec video pad align b+ getc tar =====================================================最簡單的基於FFmpeg的移動端樣例系列文章列表:最簡單的基於FFm

    點選某列表介面上的某按鈕時調出來另一個設計項的列表介面,選中被調出的列表介面上的值時彈出【資料】能輸入資料的程式碼

    //例如:【出庫管理】設計項的列表介面上有一個【出庫】按鈕,點擊出庫按鈕時調出【入庫管理】設計項的列表介面,選中【入庫管理】列表介面上的一條記錄時,彈出輸入框,程式碼樣例如下   function(button, e) { debugger; // 中斷除錯指令,可以手動刪除它

    IOS中UISearchController搜尋篩選功能實現

    在之前的部落格中,我曾寫過一個搜尋框功能的一個實現!有時候,我們需要利用搜索框進行對資料的一個篩選,比如qq的聯絡人功能上面的搜尋篩選功能的實現! 廢話不多說,先直接上程式碼 首先我們建立一個繼承uitableview的控制器searchTableViewC

    iOS UITableView加索引條和搜尋Demo

    #import "MainViewController.h" @implementation MainViewController { //資料來源陣列 NSMutableArray*_dataArray; //搜尋結果陣列 NSMutab

    iOS 開發搜尋

    搜尋框製作: 1.遵守協議:     UISearchBarDelegate 2.建立搜尋:     UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, se

    【Android自定義控制元件】仿IOS風格的搜尋

    IOS很多控制元件的設計都是很值得借鑑的存在,作為移動開發的初學者,我們可以把這種模仿等同於學畫、練字時為鑄就基礎的臨摹行為。達者為師,努力學習別人的優點吧。 這裡是仿IOS搜尋框風格的自定義控制元件,引用了http://blog.csdn.net/d

    iOS--UISearchBar 搜尋 的使用方法詳細

     // UISearchBar的常用方法 搜尋框     UISearchBar *oneSearchBar = [[UISearchBar alloc] init];     oneSearchBar.frame = CGRectMake(0, 0, 320, 70

    【程式碼筆記】iOS-scrollerView裡多個tableView加搜尋

    #import "RootViewController.h" #import "customCell.h" @interface RootViewController () @end @implementation RootViewController - (id)initWithNibName:(N

    自定義EditText實現類iOS風格搜尋

    最近在專案中有使用到搜尋框的地方,由於其樣式要求與iOS的UISearchBar的風格一致。預設情況下,搜尋圖示和文字是居中的,在獲取焦點的時候,圖示和文字左移。但是在Android是並沒有這樣的控制元件(可能見識少,並不知道有)。通常情況下我們使用組合控制元件

    怎樣把報表放到網頁中顯示(Web頁面與報表簡單集成

    nal 嵌入 自己 rim 框架 ram art ner prim 1.問題描寫敘述 如今用戶開發的系統基本上趨向於BS架構的瀏覽器/server模式。這些系統可能由不同的語言開發。如HTML、ASP、JSP、PHP等。因此須要將制作好的報表嵌入到這些頁面中。 Fine

    復雜進銷存

    src com 動態 mage log 主從 代碼生成器 1-1 http 為方便開發參考,實現復雜的交互及子從表的操作,後面版本將提供復雜的進銷存樣例,並集成代碼生成器生成復雜的表操作主要功能:主從表聯合顯示批量提交,批量導入彈窗選擇動態計算行等等... 復雜進銷存

    最簡單的基於FFmpeg的AVDevice(讀取攝像頭)

    malloc projects == 格式 mac 跨平臺 buffer 版本 span =====================================================最簡單的基於FFmpeg的AVDevice樣例文章列表:最簡單的基於FFmp

    最簡單的視音頻播放演示7:SDL2播放RGB/YUV

    pro big 更新 沒有 opaque support 解決 控制 mem =====================================================最簡單的視音頻播放演示樣例系列文章列表:最簡單的視音頻播放演示樣例1:總述最簡單的視音

    一個簡單演示來演示用PHP訪問表單變量

    time 變量 value 購物車 size post方法 form sso val 首先編寫表單頁面orderform.html,用post方法請求服務端腳本文件:processorder.php orderform.html: <!DOCTYPE html&

    Echarts 的

    typeof echarts gap java text 3-0 lines ansi eof jsp頁面: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%