zoukankan      html  css  js  c++  java
  • iOS 11 scroll滚动偏移,tableview偏移44,获取view的宽和高

    
    

    1. tableview 的头部 有44的偏移量

    1>.设置 tableview的 属性
    
            tableView.scrollIndicatorInsets = UIEdgeInsets.zero
            self.translatesAutoresizingMaskIntoConstraints = false
            if #available(iOS 11.0, *) {
                tableView.contentInsetAdjustmentBehavior = .never
            } else {
                // Fallback on earlier versions
            }
    
    2>.在控制器设置属性
            self.edgesForExtendedLayout = UIRectEdge(rawValue: 0)
            if #available(iOS 11.0, *) {
                extendedLayoutIncludesOpaqueBars = true
            }else{
                automaticallyAdjustsScrollViewInsets = false
            }
    

      

      

    2.获取VFL自定义view的宽和高

        func sizeToFitForView(temView:UIView) -> (height:CGFloat, CGFloat){
            temView.setNeedsLayout()
            temView.layoutIfNeeded()
            let height = temView.systemLayoutSizeFitting(UIView.layoutFittingCompressedSize).height
            let width = temView.systemLayoutSizeFitting(UIView.layoutFittingCompressedSize).width
            return (height, width)
        }
    

      

    3.VFL自定义tableview的headerView 获取宽和高

        override func layoutSubviews() {
            super.layoutSubviews()
            sizeHeaderToFit()
        }
    

      

        /// 重置 tableview的header的frame
        private func sizeHeaderToFit() {
            //FIXME: 这里一定要用过滤,不然会得到默认自带的headerView,高度还不可控
            guard let headerView = tableView.tableHeaderView else { return }
            headerView.setNeedsLayout()
            headerView.layoutIfNeeded()
            let height = headerView.systemLayoutSizeFitting(UIView.layoutFittingCompressedSize).height
            var frame = headerView.frame
            frame.size.height = height
            headerView.frame = frame
            tableView.tableHeaderView = headerView
        }
    

      

    4.如果用VFL 设置 ScrollView约束子视图 宽度 给一个固定值 子视图高度 加上底部约束 就不用设置 contentsize

        

    /// 添加ScrollView的子控件
    
        func setScrollVSubviews(){
    
            let vd : [String : UIView] = ["discountView":discountView,
    
                                          "shopInfoView": shopInfoView,
    
                                          "itemsView":itemsView,
    
                                          "employeesInfoView":employeesInfoView]
    
            vd.fastAddToView(scrollV)
    
            
    
            scrollV.fastAddConstraints("|[discountView((JY_DEVICE_WIDTH))]", vd)
    
            scrollV.fastAddConstraints("|[shopInfoView((JY_DEVICE_WIDTH))]", vd)
    
            scrollV.fastAddConstraints("|[itemsView((JY_DEVICE_WIDTH))]", vd)
    
            scrollV.fastAddConstraints("|[employeesInfoView((JY_DEVICE_WIDTH))]", vd)
    
            scrollV.fastAddConstraints("V:|[discountView][shopInfoView][itemsView][employeesInfoView]|", vd)
    
        }
    

      

  • 相关阅读:
    软件测试之测试策略
    如何在需求不明确的情况下保证测试质量
    《Web 前端面试指南》1、JavaScript 闭包深入浅出
    Vue-Router 页面正在加载特效
    Webpack 配置摘要
    svn 常用命令总结
    Vue + Webpack + Vue-loader 系列教程(2)相关配置篇
    Vue + Webpack + Vue-loader 系列教程(1)功能介绍篇
    关于Vue.js 2.0 的 Vuex 2.0,你需要更新的知识库
    Vue.js 2.0 和 React、Augular等其他框架的全方位对比
  • 原文地址:https://www.cnblogs.com/qingzZ/p/9243258.html
Copyright © 2011-2022 走看看