相关疑难解决方法(0)

iOS15 - SwiftUI WheelPicker 可滚动外框和剪切区域破坏其他界面

我在 HStack 中包含两个 WheelPicker,分别表示“小时”和“分钟”。每个选取器都设置在一个框架内(宽度:50,高度:30)并另外进行裁剪。

在 iOS14 中,它的行为符合预期,我可以滚动“小时”选择器来更改小时,滚动“分钟”选择器来更改分钟。

然而,在 iOS15 中,“分钟”轮选择器超出了 50 的框架宽度,并重叠到“小时”选择器中;如果我在“小时”选择器上滚动,“分钟”值会发生变化(而不是“小时”值),如果我在“分钟”选择器上滚动,它会按预期更改“分钟”。如果我触摸“小时”选择器外部的最左侧,则“小时”值会发生变化。

有人有同样的问题以及该问题的解决方法吗?

我遇到了添加“mask(rectangle()”的解决方法并尝试了它,但它在 iOS15 上不起作用。


    @State private var hour: Int = 0
    @State private var minute: Int = 0
    
    
    var body: some View {
        
        VStack {
            
            HStack (alignment: .center, spacing: 3) {
                
                NumberPicker("", selection: $hour
                                 , startValue: 0
                                 , endValue: 23
                                 , pickerSize: CGSize(width: 50, height: 30)
                )

                Text("hr")
                
                NumberPicker("", selection: $minute
                                 , startValue: 0
                                 , endValue: 59
                                 , pickerSize: CGSize(width: 50, height: 30)
                )

                Text("min")

            } …
Run Code Online (Sandbox Code Playgroud)

swiftui ios15

13
推荐指数
2
解决办法
2657
查看次数

SwiftUI Picker 的可点击区域重叠

我目前正在尝试创建一个页面,Picker其中包含三个相邻视图,HStack如下所示:

在此输入图像描述

我制作了一个CustomPicker视图,将框架限制为 90 x 240,然后使用.compositingGroup()和.clipped()使每个选择器的可选区域不重叠。

自定义选择器.swift

import SwiftUI

struct CustomPicker: View {
    @Binding var selection: Int
    let pickerColor: Color
    
    var numbers: some View {
        ForEach(0...100, id: \.self) { num in
            Text("\(num)")
                .bold()
        }
    }
    
    var stroke: some View {
        RoundedRectangle(cornerRadius: 16)
            .stroke(lineWidth: 2)
    }
    
    var backgroundColor: some View {
        pickerColor
            .opacity(0.25)
    }
    
    var body: some View {
        Picker("Numbers", selection: $selection) {
            numbers
        }
        .frame(width: 90, height: 240)
        .compositingGroup()
        .clipped()
        .pickerStyle(.wheel) …
Run Code Online (Sandbox Code Playgroud)

ios swift swiftui swiftui-picker

5
推荐指数
2
解决办法
2402
查看次数

标签 统计

swiftui ×2

ios ×1

ios15 ×1

swift ×1

swiftui-picker ×1