TableView下拉表头放大 导航栏颜色透明度随着TableView偏移量渐变

TableView 下拉表头放大

导航栏颜色透明度随着TableView偏移量渐变

用storeboard 布局,之前尝试在storeboard中设置tableview的表头,但是那样弄出来的效果 表头不贴着上面,后来改成storeboard和代码 结合,最后实现的这个效果

下载链接: https://github.com/ShaoWenLe/TableViewThe-drop-down-amplification.git

import UIKit
let KScreen_Width = UIScreen.mainScreen().bounds.size.width
let KScreen_Height = UIScreen.mainScreen().bounds.size.height
let imgHeight : CGFloat = 200

class ViewController: UIViewController {
    @IBOutlet weak var tableView: UITableView!
    var imageView : UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        self.navigationController?.navigationBar.barTintColor = UIColor.init(colorLiteralRed: 240/255, green: 240/255, blue: 100/255, alpha: 1)
        self.navigationController?.navigationBar.alpha = 0

        let rightButton = UIButton.init(type: .Custom)
        rightButton.frame = CGRectMake(KScreen_Width-40, 32, 20, 20)
        rightButton .setBackgroundImage(UIImage.init(named: "1"), forState: .Normal)
        rightButton.addTarget(self, action: #selector(ViewController.click), forControlEvents: .TouchUpInside)
       self.navigationController?.view .addSubview(rightButton)

        /**
         去除导航栏黑线
         */
        if ((self.navigationController?.navigationBar .respondsToSelector(#selector(self.navigationController?.navigationBar.setBackgroundImage(_:forBarMetrics:)))) != nil){
            for view in (self.navigationController?.navigationBar.subviews)! as [UIView] {
                if view is UIImageView {
                    for view2 in view.subviews {
                        if view2 is UIImageView {
                            view2.hidden = true;
                        }
                    }
                }
            }
        }

        tableView.contentInset = UIEdgeInsetsMake(imgHeight, 0, 0, 0)
        imageView = UIImageView.init(frame: CGRectMake(0, -imgHeight, KScreen_Width, imgHeight))
        imageView.image = UIImage.init(named: "1468895691727")
        imageView.contentMode = .ScaleAspectFill
        tableView .addSubview(imageView)

    }

    func scrollViewDidScroll(scrollView: UIScrollView)
    {
        let offsetY  = scrollView.contentOffset.y
        let offsetH  = imgHeight + offsetY - 20

        if offsetH <= 0 {
            imageView?.frame = CGRectMake(0, -imgHeight+offsetH, KScreen_Width, imgHeight-offsetH)
            self.navigationController?.navigationBar.alpha = 0
        } else {

            let min = offsetH/(imgHeight-64) < 1 ? offsetH / (imgHeight-64) : 1

            self.navigationController?.navigationBar.alpha = min
        }

    }

    // MARK: - Table view data source

     func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        // #warning Incomplete implementation, return the number of sections
        return 1
    }

     func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // #warning Incomplete implementation, return the number of rows
        return 100
    }

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
     let cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath)
        cell.textLabel?.text = String(format: "第%ld行",indexPath.row+1)
     // Configure the cell...

     return cell
     }

    //右侧按钮点击
    func click() {
        print("点击了按钮")
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

}
时间: 2024-12-25 23:02:16

TableView下拉表头放大 导航栏颜色透明度随着TableView偏移量渐变的相关文章

【CSS】扁平化,支持IE6的含有方块超级链接的导航栏与含有支持IE8的下拉菜单的导航栏

上次在<[Bootstrap]导航栏navbar在IE8上的缺陷与解决方案>(点击打开链接)给大家推荐过导航栏怎么写, 这次不用任何框架,纯手写CSS,原生态,方便各位改写!请笑纳. 一.首先是含有方块超级链接的导航栏,如下图: 这个东西个人觉得拼接在一些灰色巨幕下面做首页的导航栏不错 或者放在一些标签页上面也是可以的 代码如下: <div style="width:70%; text-align:center; margin-left:auto; margin-right:a

iOS tableView下拉图片放大

事实上这个效果,本质上就是在你tableView下拉 造成offset时候. 保持你顶部图片的y坐标点还停留在下拉时屏幕的顶点(offset), 而图片的长度变为原始的height长度-(offset ) 就达到了下拉放大的效果. 直接上代码了: 1. 首先创建一个UIView作为headerView _topView = [[UIViewalloc]initWithFrame:CGRectMake(0,0,MCAPPWidth,80)]; _tableView.tableHeaderView

tableView下拉图片放大

其实这个效果,本质上就是在你tableView下拉 造成offset时候, 保持你顶部图片的y坐标点还停留在下拉时屏幕的顶点(offset), 而图片的长度变为原始的height长度-(offset ) 就达到了下拉放大的效果. 直接上代码了: 1. 首先创建一个UIView作为headerView _topView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, MCAPPWidth, 80)]; _tableView.tableHeaderVi

第六十七篇、OC_UITableView head下拉图片放大的效果

(一) 布置UITableview 我们首先要通过设置UITableview的内容偏移 self.tableView.contentInset 来为图片视图留出位置,这里我们的图片高度暂定为280 const CGFloat contentInset = 280; @interface ViewController ()<UITableViewDelegate,UITableViewDataSource> @property (nonatomic, strong) UITableView *t

ios 导航栏透明, 上下滑动 导航栏 颜色渐变

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "PingFang SC"; color: #008400 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #3d1d81 } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #008400 } p.p4 {

IOS 导航栏颜色 标题

修改导航栏颜 1 #define COLOR_TOMATO    [UIColor colorWithRed:255/255.0f green:99/255.0f blue:71/255.0f alpha:1.0f]     /*!< 番茄色 */ 2 3 self.navigationController.navigationBar.barTintColor = COLOR_TOMATO;//修改导航栏颜色 修改导航栏标题字体(大小.颜色) 1 self.navigationControlle

tableView下拉距离限制

项目中使用了tableView的下拉加载历史记录功能.其中一个逻辑是这样的:手撒开后,tableView会反弹回顶部,为了让cell复用没问题,设置延迟更新数据源.因为如果在手撒开tableView未反弹时就更新数据源,那么界面最下方的cell数据会根据新数据源来设置,导致错误.这个"延迟"的时间必须保证tableView能及时的反弹回顶部.后来发现设置这个时间并不是多么保险,因为我们无法保证用户下拉tableView的距离有多远,这决定了tableView反弹回顶部用的时间.所以干脆

用JS让下拉框改变网页背景颜色

<HTML> <HEAD> <TITLE>石家庄渣浆泵配件</TITLE> </HEAD> <SCRIPT> <!-- function bgChange(selObj) { newColor = selObj.options[selObj.selectedIndex].text; document.bgColor = newColor; selObj.selectedIndex = -1; } //--> </SC

设置全局导航栏颜色,标题大小和UIBarButtonItem字体大小

设置全局导航栏颜色,标题大小和UIBarButtonItem字体大小 在appdelegate里面设置 swift: UINavigationBar.appearance().barTintColor = UIColor.init(red: 47, green: 48, blue: 52) UINavigationBar.appearance().tintColor = UIColor.whiteColor() UINavigationBar.appearance().titleTextAttr