iOS 安全布局封装

// UIViewExtensions.swift
import UIKit
import SnapKit

public struct SafeArea {
    let view: UIView
    
    var top: ConstraintItem {
        if #available(iOS 11, *) {
            return view.safeAreaLayoutGuide.snp.top            
        } else {
            return view.viewController!.topLayoutGuide.snp.top
        }
    }
    
    var left: ConstraintItem {
        return view.snp.left
    }
    
    var bottom: ConstraintItem {
        if #available(iOS 11, *) {
            return view.safeAreaLayoutGuide.snp.bottom
        } else {
            return view.viewController!.bottomLayoutGuide.snp.bottom
        }
    }
    
    var right: ConstraintItem {
        return view.snp.right
    }
}

//MARK:- 安全布局
extension UIView {
    public var safeArea: SafeArea {
        return SafeArea(view: self)
    }
}

使用

        [headerView, segmentedView, scrollTableView].forEach { view.addSubview($0) }
        headerView.snp.makeConstraints { (make) in
            make.top.equalTo(self.view.safeArea.top)
            make.left.width.equalTo(self.view)
            make.height.equalTo(headerView.height)
        }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容