Skip to content

Commit 4746b8d

Browse files
author
Isaac
committed
Stickers
1 parent 3bca9ed commit 4746b8d

File tree

2 files changed

+54
-8
lines changed

2 files changed

+54
-8
lines changed

submodules/TelegramUI/Components/EntityKeyboard/Sources/EmojiPagerContentComponent.swift

Lines changed: 53 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1390,6 +1390,8 @@ public final class EmojiPagerContentComponent: Component {
13901390
private let backgroundTintView: UIView
13911391
private var fadingMaskLayer: FadingMaskLayer?
13921392
private var tintFadingMaskLayer: FadingMaskLayer?
1393+
private var topPanelSeparator: (colorLayer: SimpleLayer, tintLayer: SimpleLayer)?
1394+
private var topPanelHeight: CGFloat = 0.0
13931395
private var vibrancyClippingView: UIView
13941396
private var vibrancyEffectView: UIView?
13951397
public private(set) var mirrorContentClippingView: UIView?
@@ -4016,6 +4018,23 @@ public final class EmojiPagerContentComponent: Component {
40164018
}
40174019
if let tintFadingMaskLayer = self.tintFadingMaskLayer {
40184020
tintFadingMaskLayer.internalAlpha = max(0.0, min(1.0, self.scrollView.contentOffset.y / 30.0))
4021+
4022+
self.updateTopPanelSeparator(transition: transition)
4023+
}
4024+
}
4025+
4026+
private func updateTopPanelSeparator(transition: ComponentTransition) {
4027+
if let topPanelSeparator = self.topPanelSeparator {
4028+
var offset = self.scrollView.contentOffset.y
4029+
let startOffset: CGFloat = 40.0 - self.topPanelHeight
4030+
let endOffset: CGFloat = startOffset + 10.0
4031+
4032+
offset = min(max(offset, startOffset), endOffset)
4033+
offset = (endOffset - offset) / (endOffset - startOffset)
4034+
let alpha = 1.0 - offset
4035+
4036+
transition.setAlpha(layer: topPanelSeparator.colorLayer, alpha: alpha)
4037+
transition.setAlpha(layer: topPanelSeparator.tintLayer, alpha: alpha)
40194038
}
40204039
}
40214040

@@ -4102,14 +4121,41 @@ public final class EmojiPagerContentComponent: Component {
41024121
self.tintFadingMaskLayer = tintFadingMaskLayer
41034122
}
41044123

4124+
if case .clip = component.maskEdge {
4125+
let topPanelSeparator: (colorLayer: SimpleLayer, tintLayer: SimpleLayer)
4126+
if let current = self.topPanelSeparator {
4127+
topPanelSeparator = current
4128+
} else {
4129+
topPanelSeparator = (SimpleLayer(), SimpleLayer())
4130+
self.topPanelSeparator = topPanelSeparator
4131+
self.layer.addSublayer(topPanelSeparator.colorLayer)
4132+
if let effectContainerView = externalTintMaskContainer ?? component.inputInteractionHolder.inputInteraction?.externalBackground?.effectContainerView {
4133+
effectContainerView.layer.addSublayer(topPanelSeparator.tintLayer)
4134+
}
4135+
}
4136+
4137+
topPanelSeparator.colorLayer.backgroundColor = keyboardChildEnvironment.theme.list.itemPlainSeparatorColor.withMultipliedAlpha(0.5).cgColor
4138+
topPanelSeparator.tintLayer.backgroundColor = UIColor(white: 0.0, alpha: 0.7).cgColor
4139+
4140+
let separatorFrame = CGRect(origin: CGPoint(x: 0.0, y: topPanelHeight - UIScreenPixel), size: CGSize(width: backgroundFrame.width, height: UIScreenPixel))
4141+
transition.setFrame(layer: topPanelSeparator.colorLayer, frame: separatorFrame)
4142+
transition.setFrame(layer: topPanelSeparator.tintLayer, frame: separatorFrame)
4143+
4144+
self.topPanelHeight = topPanelHeight
4145+
self.updateTopPanelSeparator(transition: transition)
4146+
}
4147+
41054148
if self.layer.mask == nil {
41064149
self.layer.mask = maskLayer
41074150
}
41084151
if self.mirrorContentClippingView?.layer.mask != tintFadingMaskLayer {
41094152
self.mirrorContentClippingView?.layer.mask = tintFadingMaskLayer
41104153
}
4111-
maskLayer.frame = CGRect(origin: CGPoint(x: 0.0, y: topPanelHeight - 40.0), size: backgroundFrame.size)
4112-
tintFadingMaskLayer.frame = maskLayer.frame
4154+
let maskFrame = CGRect(origin: CGPoint(x: 0.0, y: topPanelHeight - 40.0), size: backgroundFrame.size)
4155+
transition.setFrame(layer: maskLayer, frame: maskFrame)
4156+
transition.setFrame(layer: tintFadingMaskLayer, frame: maskLayer.frame)
4157+
maskLayer.update(size: maskFrame.size, transition: transition)
4158+
tintFadingMaskLayer.update(size: maskFrame.size, transition: transition)
41134159
}
41144160
} else if component.warpContentsOnEdges {
41154161
self.backgroundView.isHidden = true
@@ -4955,7 +5001,7 @@ private final class FadingMaskLayer: SimpleLayer {
49555001
fatalError("init(coder:) has not been implemented")
49565002
}
49575003

4958-
override func layoutSublayers() {
5004+
func update(size: CGSize, transition: ComponentTransition) {
49595005
let gradientHeight: CGFloat = 66.0
49605006
if self.gradientLayer.contents == nil {
49615007
if !self.isHard {
@@ -4973,13 +5019,13 @@ private final class FadingMaskLayer: SimpleLayer {
49735019
self.gradientFillLayer.backgroundColor = UIColor.white.cgColor
49745020
}
49755021

4976-
self.gradientLayer.frame = CGRect(origin: .zero, size: CGSize(width: self.bounds.width, height: gradientHeight))
4977-
self.gradientFillLayer.frame = self.gradientLayer.frame
5022+
transition.setFrame(layer: self.gradientLayer, frame: CGRect(origin: .zero, size: CGSize(width: size.width, height: gradientHeight)))
5023+
transition.setFrame(layer: self.gradientFillLayer, frame: self.gradientLayer.frame)
49785024
if self.isHard {
49795025
let hardHeight: CGFloat = 40.0
4980-
self.fillLayer.frame = CGRect(origin: CGPoint(x: 0.0, y: hardHeight), size: CGSize(width: self.bounds.width, height: self.bounds.height - hardHeight))
5026+
transition.setFrame(layer: self.fillLayer, frame: CGRect(origin: CGPoint(x: 0.0, y: hardHeight), size: CGSize(width: size.width, height: size.height - hardHeight)))
49815027
} else {
4982-
self.fillLayer.frame = CGRect(origin: CGPoint(x: 0.0, y: gradientHeight), size: CGSize(width: self.bounds.width, height: self.bounds.height - gradientHeight))
5028+
transition.setFrame(layer: self.fillLayer, frame: CGRect(origin: CGPoint(x: 0.0, y: gradientHeight), size: CGSize(width: size.width, height: size.height - gradientHeight)))
49835029
}
49845030
}
49855031
}

submodules/TelegramUI/Components/GlassBackgroundComponent/Sources/GlassBackgroundComponent.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -711,7 +711,7 @@ public extension GlassBackgroundView {
711711
} else if s <= 0.3 && !isDark {
712712
image.draw(in: CGRect(origin: CGPoint(), size: size).insetBy(dx: inset - imageInset, dy: inset - imageInset), blendMode: .normal, alpha: 0.7)
713713
} else if b >= 0.2 {
714-
image.draw(in: CGRect(origin: CGPoint(), size: size).insetBy(dx: inset - imageInset, dy: inset - imageInset), blendMode: .plusLighter, alpha: 0.7)
714+
image.draw(in: CGRect(origin: CGPoint(), size: size).insetBy(dx: inset - imageInset, dy: inset - imageInset), blendMode: .overlay, alpha: 1.0)
715715
} else {
716716
image.draw(in: CGRect(origin: CGPoint(), size: size).insetBy(dx: inset - imageInset, dy: inset - imageInset), blendMode: .normal, alpha: 0.5)
717717
}

0 commit comments

Comments
 (0)