mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-17 03:40:18 +00:00
Apply patch
This commit is contained in:
parent
e649d53562
commit
9c5f860317
File diff suppressed because one or more lines are too long
@ -18,7 +18,8 @@ final class VoiceBlobView: UIView, TGModernConversationInputMicButtonDecoration
|
|||||||
maxSpeed: 0.6,
|
maxSpeed: 0.6,
|
||||||
minScale: 0.45,
|
minScale: 0.45,
|
||||||
maxScale: 0.55,
|
maxScale: 0.55,
|
||||||
scaleSpeed: 0.2
|
scaleSpeed: 0.2,
|
||||||
|
isCircle: true
|
||||||
)
|
)
|
||||||
private let mediumBlob = BlobView(
|
private let mediumBlob = BlobView(
|
||||||
pointsCount: 8,
|
pointsCount: 8,
|
||||||
@ -28,7 +29,8 @@ final class VoiceBlobView: UIView, TGModernConversationInputMicButtonDecoration
|
|||||||
maxSpeed: 7,
|
maxSpeed: 7,
|
||||||
minScale: 0.55,
|
minScale: 0.55,
|
||||||
maxScale: 0.9,
|
maxScale: 0.9,
|
||||||
scaleSpeed: 0.2
|
scaleSpeed: 0.2,
|
||||||
|
isCircle: false
|
||||||
)
|
)
|
||||||
private let bigBlob = BlobView(
|
private let bigBlob = BlobView(
|
||||||
pointsCount: 8,
|
pointsCount: 8,
|
||||||
@ -38,7 +40,8 @@ final class VoiceBlobView: UIView, TGModernConversationInputMicButtonDecoration
|
|||||||
maxSpeed: 7,
|
maxSpeed: 7,
|
||||||
minScale: 0.55,
|
minScale: 0.55,
|
||||||
maxScale: 1,
|
maxScale: 1,
|
||||||
scaleSpeed: 0.2
|
scaleSpeed: 0.2,
|
||||||
|
isCircle: false
|
||||||
)
|
)
|
||||||
|
|
||||||
override init(frame: CGRect) {
|
override init(frame: CGRect) {
|
||||||
@ -101,6 +104,9 @@ final class BlobView: UIView {
|
|||||||
let maxScale: CGFloat
|
let maxScale: CGFloat
|
||||||
let scaleSpeed: CGFloat
|
let scaleSpeed: CGFloat
|
||||||
|
|
||||||
|
// If true ignores randomness and pointsCount
|
||||||
|
let isCircle: Bool
|
||||||
|
|
||||||
var level: CGFloat = 0 {
|
var level: CGFloat = 0 {
|
||||||
didSet {
|
didSet {
|
||||||
speedLevel = max(level, speedLevel)
|
speedLevel = max(level, speedLevel)
|
||||||
@ -153,7 +159,8 @@ final class BlobView: UIView {
|
|||||||
maxSpeed: CGFloat,
|
maxSpeed: CGFloat,
|
||||||
minScale: CGFloat,
|
minScale: CGFloat,
|
||||||
maxScale: CGFloat,
|
maxScale: CGFloat,
|
||||||
scaleSpeed: CGFloat
|
scaleSpeed: CGFloat,
|
||||||
|
isCircle: Bool
|
||||||
) {
|
) {
|
||||||
self.pointsCount = pointsCount
|
self.pointsCount = pointsCount
|
||||||
self.minRandomness = minRandomness
|
self.minRandomness = minRandomness
|
||||||
@ -163,6 +170,7 @@ final class BlobView: UIView {
|
|||||||
self.minScale = minScale
|
self.minScale = minScale
|
||||||
self.maxScale = maxScale
|
self.maxScale = maxScale
|
||||||
self.scaleSpeed = scaleSpeed
|
self.scaleSpeed = scaleSpeed
|
||||||
|
self.isCircle = isCircle
|
||||||
|
|
||||||
let angle = (CGFloat.pi * 2) / CGFloat(pointsCount)
|
let angle = (CGFloat.pi * 2) / CGFloat(pointsCount)
|
||||||
self.smoothness = ((4 / 3) * tan(angle / 4)) / sin(angle / 2) / 2
|
self.smoothness = ((4 / 3) * tan(angle / 4)) / sin(angle / 2) / 2
|
||||||
@ -208,6 +216,8 @@ final class BlobView: UIView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func animateToNewShape() {
|
func animateToNewShape() {
|
||||||
|
guard !isCircle else { return }
|
||||||
|
|
||||||
if pop_animation(forKey: "blob") != nil {
|
if pop_animation(forKey: "blob") != nil {
|
||||||
fromPoints = currentPoints
|
fromPoints = currentPoints
|
||||||
toPoints = nil
|
toPoints = nil
|
||||||
@ -296,6 +306,13 @@ final class BlobView: UIView {
|
|||||||
CATransaction.begin()
|
CATransaction.begin()
|
||||||
CATransaction.setDisableActions(true)
|
CATransaction.setDisableActions(true)
|
||||||
shapeLayer.position = CGPoint(x: bounds.midX, y: bounds.midY)
|
shapeLayer.position = CGPoint(x: bounds.midX, y: bounds.midY)
|
||||||
|
if isCircle {
|
||||||
|
let halfWidth = bounds.width * 0.5
|
||||||
|
shapeLayer.path = UIBezierPath(
|
||||||
|
roundedRect: bounds.offsetBy(dx: -halfWidth, dy: -halfWidth),
|
||||||
|
cornerRadius: halfWidth
|
||||||
|
).cgPath
|
||||||
|
}
|
||||||
CATransaction.commit()
|
CATransaction.commit()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user