Fix hit test

This commit is contained in:
Ali 2023-06-19 01:22:25 +03:00
parent e5d948d90a
commit 45a39e4d47
2 changed files with 46 additions and 31 deletions

View file

@ -427,6 +427,18 @@ public final class StoryItemSetContainerComponent: Component {
}
}
if let centerInfoItemView = self.centerInfoItem?.view.view {
if centerInfoItemView.convert(centerInfoItemView.bounds, to: self).contains(point) {
return false
}
}
if let rigthInfoItemView = self.rightInfoItem?.view.view {
if rigthInfoItemView.convert(rigthInfoItemView.bounds, to: self).contains(point) {
return false
}
}
if self.contentContainerView.frame.contains(point) {
return true
}
@ -1733,6 +1745,36 @@ public final class StoryItemSetContainerComponent: Component {
}
}
if let currentCenterInfoItem {
self.centerInfoItem = currentCenterInfoItem
let centerInfoItemSize = currentCenterInfoItem.view.update(
transition: .immediate,
component: AnyComponent(PlainButtonComponent(content: currentCenterInfoItem.component, effectAlignment: .center, action: { [weak self] in
guard let self, let component = self.component else {
return
}
self.navigateToPeer(peer: component.slice.peer)
})),
environment: {},
containerSize: CGSize(width: contentFrame.width, height: 44.0)
)
if let view = currentCenterInfoItem.view.view {
var animateIn = false
if view.superview == nil {
self.contentContainerView.addSubview(view)
animateIn = true
}
transition.setFrame(view: view, frame: CGRect(origin: CGPoint(x: 0.0, y: 10.0), size: centerInfoItemSize))
if animateIn, !isFirstTime {
//view.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2)
}
transition.setAlpha(view: view, alpha: (component.hideUI || self.displayViewList) ? 0.0 : 1.0)
}
}
if let currentRightInfoItem {
self.rightInfoItem = currentRightInfoItem
@ -1764,37 +1806,6 @@ public final class StoryItemSetContainerComponent: Component {
}
}
if let currentCenterInfoItem {
self.centerInfoItem = currentCenterInfoItem
let centerInfoItemSize = currentCenterInfoItem.view.update(
transition: .immediate,
component: AnyComponent(PlainButtonComponent(content: currentCenterInfoItem.component, effectAlignment: .center, action: { [weak self] in
guard let self, let component = self.component else {
return
}
self.navigateToPeer(peer: component.slice.peer)
})),
environment: {},
containerSize: CGSize(width: contentFrame.width, height: 44.0)
)
if let view = currentCenterInfoItem.view.view {
var animateIn = false
if view.superview == nil {
view.isUserInteractionEnabled = false
self.contentContainerView.addSubview(view)
animateIn = true
}
transition.setFrame(view: view, frame: CGRect(origin: CGPoint(x: 0.0, y: 10.0), size: centerInfoItemSize))
if animateIn, !isFirstTime {
//view.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2)
}
transition.setAlpha(view: view, alpha: (component.hideUI || self.displayViewList) ? 0.0 : 1.0)
}
}
let gradientHeight: CGFloat = 74.0
transition.setFrame(layer: self.topContentGradientLayer, frame: CGRect(origin: CGPoint(x: 0.0, y: 0.0), size: CGSize(width: contentFrame.width, height: gradientHeight)))
transition.setAlpha(layer: self.topContentGradientLayer, alpha: (component.hideUI || self.displayViewList) ? 0.0 : 1.0)

View file

@ -43,6 +43,8 @@ final class StoryAuthorInfoComponent: Component {
override init(frame: CGRect) {
super.init(frame: frame)
self.isUserInteractionEnabled = false
}
required init?(coder: NSCoder) {
@ -88,12 +90,14 @@ final class StoryAuthorInfoComponent: Component {
if let titleView = self.title.view {
if titleView.superview == nil {
titleView.isUserInteractionEnabled = false
self.addSubview(titleView)
}
transition.setFrame(view: titleView, frame: titleFrame)
}
if let subtitleView = self.subtitle.view {
if subtitleView.superview == nil {
subtitleView.isUserInteractionEnabled = false
self.addSubview(subtitleView)
}
transition.setFrame(view: subtitleView, frame: subtitleFrame)