react-native-ios-context-menu/ios/Sources/Common/AutoLayoutWrapperView.swift
2024-02-07 14:29:48 +08:00

44 lines
983 B
Swift

//
// AutoLayoutWrapperView.swift
// ReactNativeIosContextMenu
//
// Created by Dominic Go on 11/19/23.
//
import UIKit
import ReactNativeIosUtilities
class AutoLayoutWrapperView: UIView {
public override var frame: CGRect {
willSet {
self.updateSizeOfSubviews(newSize: newValue.size);
}
};
override func addSubview(_ view: UIView) {
if let detachedView = view as? RNIDetachedView {
try? detachedView.updateBounds(newSize: self.bounds.size);
};
super.addSubview(view);
}
override func layoutSubviews() {
super.layoutSubviews();
self.updateSizeOfSubviews();
};
override func updateConstraints() {
super.updateConstraints();
self.updateSizeOfSubviews();
};
func updateSizeOfSubviews(newSize: CGSize? = nil){
self.subviews.forEach {
guard let detachedView = $0 as? RNIDetachedView else { return };
try? detachedView.updateBounds(newSize: newSize ?? self.bounds.size);
};
};
};