mirror of
https://github.com/mastodon/mastodon-ios.git
synced 2024-12-14 18:05:50 +01:00
58 lines
2.3 KiB
Swift
58 lines
2.3 KiB
Swift
|
//
|
||
|
// ViewLayoutFrame.swift
|
||
|
//
|
||
|
//
|
||
|
// Created by MainasuK on 2022-8-17.
|
||
|
//
|
||
|
|
||
|
import os.log
|
||
|
import UIKit
|
||
|
import CoreGraphics
|
||
|
|
||
|
public struct ViewLayoutFrame {
|
||
|
let logger = Logger(subsystem: "ViewLayoutFrame", category: "ViewLayoutFrame")
|
||
|
|
||
|
public var layoutFrame: CGRect
|
||
|
public var safeAreaLayoutFrame: CGRect
|
||
|
public var readableContentLayoutFrame: CGRect
|
||
|
|
||
|
public init(
|
||
|
layoutFrame: CGRect = .zero,
|
||
|
safeAreaLayoutFrame: CGRect = .zero,
|
||
|
readableContentLayoutFrame: CGRect = .zero
|
||
|
) {
|
||
|
self.layoutFrame = layoutFrame
|
||
|
self.safeAreaLayoutFrame = safeAreaLayoutFrame
|
||
|
self.readableContentLayoutFrame = readableContentLayoutFrame
|
||
|
}
|
||
|
}
|
||
|
|
||
|
extension ViewLayoutFrame {
|
||
|
public mutating func update(view: UIView) {
|
||
|
guard view.window != nil else {
|
||
|
logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): layoutFrame update for a view without attached window. Skip this invalid update")
|
||
|
return
|
||
|
}
|
||
|
|
||
|
let layoutFrame = view.frame
|
||
|
if self.layoutFrame != layoutFrame {
|
||
|
self.layoutFrame = layoutFrame
|
||
|
}
|
||
|
|
||
|
let safeAreaLayoutFrame = view.safeAreaLayoutGuide.layoutFrame
|
||
|
if self.safeAreaLayoutFrame != safeAreaLayoutFrame {
|
||
|
self.safeAreaLayoutFrame = safeAreaLayoutFrame
|
||
|
}
|
||
|
|
||
|
let readableContentLayoutFrame = view.readableContentGuide.layoutFrame
|
||
|
if self.readableContentLayoutFrame != readableContentLayoutFrame {
|
||
|
self.readableContentLayoutFrame = readableContentLayoutFrame
|
||
|
}
|
||
|
|
||
|
logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): layoutFrame: \(layoutFrame.debugDescription)")
|
||
|
logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): safeAreaLayoutFrame: \(safeAreaLayoutFrame.debugDescription)")
|
||
|
logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): readableContentLayoutFrame: \(readableContentLayoutFrame.debugDescription)")
|
||
|
|
||
|
}
|
||
|
}
|