设为首页 加入收藏

TOP

swift-教你如何实现导航上的UISearchController动画效果。(一)
2017-10-11 16:35:12 】 浏览:3888
Tags:swift- 如何 实现 导航 UISearchController 动画 效果

   这个代码片段是我这周我从网上找了各种资料然后经过自己的修改终于弄好了导航的上下动画效果:

step1:==>因为这个搜索要有动画效果,所以这个页面必须要有一个导航控制器:

//1.自定义创建导航控制器

这个页面我是从其他页面跳转过来的,跳转之前我自定义了一个导航控制器:

   let actionSearchTable=searchTable();

        let navVC = UINavigationController(rootViewController: actionSearchTable);

        navVC.navigationBar.barStyle = UIBarStyle.BlackTranslucent;

        self.presentViewController(navVC, animated: true, completion: nil);

//2.点击搜索跳转到 searchTable.swift,这个页面我继承的是 UITableViewController,而不是UiViewController,一定要注意,不然每当点击一次搜索取消的时候table上面会多出一片空白,这个原理我还不是太明白,如果你们发现了其中的原理希望能指点一二。

这个表格的数据源我引用的是一个txt文件。格式如下图:

 

//
//  searchResultTable.swift
//  搜索框
//
//  Created by 卢洋 on 15/11/6.
//  Copyright © 2015年 奈文摩尔. All rights reserved.
//

import UIKit

class searchTable: UITableViewController,UISearchBarDelegate{
    lazy var dismissBtn: UIButton = { UIButton(frame: CGRectMake(0, 0, 24, 24)) }();//返回按钮
    
    var itemsString:[String]!
    var searcher:UISearchController!
    var searchBars:UISearchBar?
    
    struct SearchControllerRestorableState {
        var wasActive = false
        var wasFirstResponder = false
    }
    var restoredState = SearchControllerRestorableState();
    
    //初始化函数
    override func viewDidLoad() {
        super.viewDidLoad();
        self.title="查找商家";
        initView();
        
    }
    
    //初始化UI
    func initView(){
        dismissBtnPrepare();
        //创建Table
        self.tableView=UITableView(frame: CGRectMake(0, 80, UIScreen.mainScreen().bounds.width, UIScreen.mainScreen().bounds.height));
        self.tableView.delegate=self;
        self.tableView.dataSource=self;
        self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cells")
        
        //1.读取表格数据
        let tablePath = NSBundle.mainBundle().pathForResource("states", ofType: "txt")!;
        let tableData=try! NSString(contentsOfFile: tablePath, encoding: NSUTF8StringEncoding);
        itemsString = tableData.componentsSeparatedByString("\n") as [String];
        
        let src = searchResultTable(data: itemsString)
        searcher = UISearchController(searchResultsController: src)
        
        searcher.searchResultsUpdater = src;
        //获取焦点时有阴影效果
        searcher.dimsBackgroundDuringPresentation=true;
        //获取焦点导航向上移的动画效果
        searcher.hidesNavigationBarDuringPresentation=true;
        searchBars = searcher.searchBar
        tableView.tableHeaderView = searchBars
        searchBars?.delegate=self;
        searchBars?.placeholder="输入商家名称";
        //取消按钮颜色和文本框光标颜色
        searchBars?.tintColor=UIColor.blueWithTabbar();
        //搜索框背景颜色
        //searchBars?.barTintColor=UIColor.blackColor();
        searcher.searchBar.sizeToFit();
        self.tableView.reloadData();
     //背景充满导航 definesPresentationContext
= true; } override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) // Restore the searchController's active state. if restoredState.wasActive { searcher.active = restoredState.wasActive restoredState.wasActive = false if restoredState.wasFirstResponder { searcher.searchBar.becomeFirstResponder() restoredState.wasFirstResponder = false } } } override func viewDidDisappear(animated: Bool) { super.viewDidAppear(animated); //2.3将状态栏变为白色 UIApplication.sharedA
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇iOS应用发布中的一些细节 下一篇iOS 开发App捕获异常, 反馈给服务..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目