小编Sto*_*one的帖子

SwiftUI - 堆栈中的多个对齐指南

有没有办法在 SwiftUI 堆栈视图 ( HStack/ VStack) 中指定多个对齐参考线?

我确实有如下基本视图设置

HStack {
    VStack { ... }
    VStack { ... }
    VStack { ... }
    VStack { ... }
    VStack { ... }
}
Run Code Online (Sandbox Code Playgroud)

在这里面VStack我确实有不同字体大小的文本。

在此输入图像描述

正如您在屏幕截图中看到的,我能够Text对齐VStack. 我使用基本.alignmentGuide功能做到了这一点。

然而,系统似乎对整体应用“偏移” VStack,而不仅仅是视图Text

是否有可能:

  • 将“对齐”仅限于视图Text?(我可以想象这是不可能的,因为它可能会破坏其他布局
  • 还向其他元素添加另一个“对齐方式”?

示例代码:

extension VerticalAlignment {
    /// A custom alignment for image titles.
    private struct TimeTextAlignment: AlignmentID {
        static func defaultValue(in context: ViewDimensions) -> CGFloat {
            // Default …
Run Code Online (Sandbox Code Playgroud)

alignment vertical-alignment swiftui

6
推荐指数
0
解决办法
376
查看次数

SwiftUI:自定义按钮无法识别具有清晰背景和 buttonStyle 的触摸

我偶然发现了ButtonSwiftUI 中 s 与自定义ButtonStyle.

我的目标是创建一个ButtonStyle带有某种“后推动画”的自定义。我为此使用了以下设置:

struct CustomButton<Content: View>: View {
    private let content: () -> Content

    init(content: @escaping () -> Content) {
        self.content = content
    }

    var body: some View {
        VStack {
            Button(action: { ... }) {
                content()
            }
            .buttonStyle(PushBackButtonStyle(pushBackScale: 0.9))
        }
    }
}

private struct PushBackButtonStyle: ButtonStyle {
    let pushBackScale: CGFloat

    func makeBody(configuration: Self.Configuration) -> some View {
        configuration
            .label
            .scaleEffect(configuration.isPressed ? pushBackScale : 1.0)
    }
}

// Preview
struct Playground_Previews: PreviewProvider …
Run Code Online (Sandbox Code Playgroud)

ios swift swiftui xcode11

3
推荐指数
1
解决办法
718
查看次数

标签 统计

swiftui ×2

alignment ×1

ios ×1

swift ×1

vertical-alignment ×1

xcode11 ×1