mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-24 07:05:35 +00:00
Privacy settings
This commit is contained in:
@@ -1,14 +1,22 @@
|
||||
import Foundation
|
||||
import UIKit
|
||||
|
||||
public enum VStackAlignment {
|
||||
case left
|
||||
case center
|
||||
case right
|
||||
}
|
||||
|
||||
public final class VStack<ChildEnvironment: Equatable>: CombinedComponent {
|
||||
public typealias EnvironmentType = ChildEnvironment
|
||||
|
||||
private let items: [AnyComponentWithIdentity<ChildEnvironment>]
|
||||
private let alignment: VStackAlignment
|
||||
private let spacing: CGFloat
|
||||
|
||||
public init(_ items: [AnyComponentWithIdentity<ChildEnvironment>], spacing: CGFloat) {
|
||||
public init(_ items: [AnyComponentWithIdentity<ChildEnvironment>], alignment: VStackAlignment = .center, spacing: CGFloat) {
|
||||
self.items = items
|
||||
self.alignment = alignment
|
||||
self.spacing = spacing
|
||||
}
|
||||
|
||||
@@ -16,6 +24,9 @@ public final class VStack<ChildEnvironment: Equatable>: CombinedComponent {
|
||||
if lhs.items != rhs.items {
|
||||
return false
|
||||
}
|
||||
if lhs.alignment != rhs.alignment {
|
||||
return false
|
||||
}
|
||||
if lhs.spacing != rhs.spacing {
|
||||
return false
|
||||
}
|
||||
@@ -45,8 +56,17 @@ public final class VStack<ChildEnvironment: Equatable>: CombinedComponent {
|
||||
|
||||
var nextY = 0.0
|
||||
for child in updatedChildren {
|
||||
let childFrame: CGRect
|
||||
switch context.component.alignment {
|
||||
case .left:
|
||||
childFrame = CGRect(origin: CGPoint(x: 0.0, y: nextY), size: child.size)
|
||||
case .center:
|
||||
childFrame = CGRect(origin: CGPoint(x: floor((size.width - child.size.width) * 0.5), y: nextY), size: child.size)
|
||||
case .right:
|
||||
childFrame = CGRect(origin: CGPoint(x: size.width - child.size.width, y: nextY), size: child.size)
|
||||
}
|
||||
context.add(child
|
||||
.position(child.size.centered(in: CGRect(origin: CGPoint(x: floor((size.width - child.size.width) * 0.5), y: nextY), size: child.size)).center)
|
||||
.position(childFrame.center)
|
||||
.appear(.default(scale: true, alpha: true))
|
||||
.disappear(.default(scale: true, alpha: true))
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user