Perf: remove unnecessary shadows and mask views

This commit is contained in:
James Magahern
2020-09-30 18:26:45 -07:00
parent 3769f5bbbf
commit fab8ccecbd
5 changed files with 19 additions and 9 deletions

View File

@@ -149,6 +149,10 @@ class BrowserView: UIView
autocompleteView.layer.cornerRadius = 8.0
autocompleteView.layer.masksToBounds = true
let shadowPath = UIBezierPath(roundedRect: autocompleteView.bounds,
cornerRadius: autocompleteView.layer.cornerRadius)
autocompleteView.layer.shadowPath = shadowPath.cgPath
if let toolbarView = toolbarView, let urlBar = toolbarView.urlBar {
let urlFrame = self.convert(urlBar.frame, from: urlBar.superview)
autocompleteView.frame = CGRect(
@@ -158,6 +162,9 @@ class BrowserView: UIView
height: bounds.height / 2.5
)
}
} else {
autocompleteView.layer.cornerRadius = 0.0
autocompleteView.layer.shadowOpacity = 0.0
}
}

View File

@@ -65,6 +65,8 @@ class ReliefButton: UIButton
backgroundView.layer.masksToBounds = true
backgroundView.layer.borderWidth = Self.borderWidth
backgroundView.layer.cornerCurve = .continuous
backgroundView.layer.shouldRasterize = true
backgroundView.layer.rasterizationScale = UIScreen.main.scale
addSubview(backgroundView)
traitCollectionDidChange(nil)
@@ -151,5 +153,8 @@ class ReliefButton: UIButton
}
shadowView.frame = backgroundView.frame
let shadowPath = UIBezierPath(roundedRect: shadowView.bounds, cornerRadius: Self.cornerRadius)
shadowView.layer.shadowPath = shadowPath.cgPath
}
}

View File

@@ -14,7 +14,6 @@ class SegmentedReliefButton: ReliefButton
didSet { children.forEach { addSubview($0) }; setNeedsLayout() }
}
private let backgroundMaskView = UIView(frame: .zero)
private let backgroundsContainerView = UIView(frame: .zero)
private var childrenHighlighObservations: [NSKeyValueObservation] = []
@@ -22,12 +21,10 @@ class SegmentedReliefButton: ReliefButton
super.init()
self.children = children
backgroundMaskView.backgroundColor = .black
backgroundMaskView.layer.masksToBounds = true
backgroundMaskView.layer.cornerRadius = Self.cornerRadius - Self.borderWidth
backgroundsContainerView.clipsToBounds = true
backgroundsContainerView.mask = backgroundMaskView
backgroundsContainerView.layer.cornerRadius = Self.cornerRadius - Self.borderWidth
constrainedToSquare = false
addSubview(backgroundsContainerView)
}
@@ -57,10 +54,7 @@ class SegmentedReliefButton: ReliefButton
super.layoutSubviews()
backgroundView.colors = [ .clear ]
backgroundView.frame = bounds
shadowView.frame = bounds
backgroundMaskView.frame = backgroundView.frame.insetBy(dx: 1.0, dy: 1.0)
backgroundsContainerView.frame = backgroundView.frame
childrenHighlighObservations.removeAll()

View File

@@ -47,6 +47,9 @@ class ToolbarView: UIView
override func layoutSubviews()
{
super.layoutSubviews()
let shadowPath = UIBezierPath(rect: bounds)
layer.shadowPath = shadowPath.cgPath
backgroundView.frame = bounds

View File

@@ -41,6 +41,7 @@ class URLBar: ReliefButton
super.init()
backgroundColor = .clear
constrainedToSquare = false
backgroundView.addSubview(progressIndicatorView)