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)
    
        }
    

      

  • 相关阅读:
    Java程序,JDK的安装、环境的配置
    Oracle数据库,序列、索引、视图
    Oracle数据库,内置函数小结
    Oracle数据库,join多表关联方式、union结果集合并
    Oracle数据库,模糊查询、去重查询
    Oracle数据库,查询语句、内置函数
    Oracle数据库,数据的增、删、改、查
    Unity 3D-Canvas画布的三种模式
    Unity 3D-Navigation网格导航系统使用教程
    Xlua使用教程、攻略
  • 原文地址:https://www.cnblogs.com/qingzZ/p/9243258.html
Copyright © 2011-2022 走看看