小编Ril*_*eux的帖子

如何正确地将“单元格项目”从 SwiftUI LazyVGrid 传递到 .sheet?

这是我的例子,我无法判断这是否是一个错误。我的所有单元格都正确加载,但是当我尝试将其作为工作表打开时DetailView(),传入的项目始终是网格中首先显示的项目(在我的情况下位于左上角),而不是原来的“单元格”被点击。那么,为什么 ForEach 循环中的项目正确填充单元格,但没有通过按钮传递到 .sheet ?

    import SwiftUI

    let columnCount: Int = 11
    let gridSpacing: CGFloat = 1

    struct GridView: View {
        
        @State var showingDetail = false
        
        let data = (1...755).map { "\($0)" }
        let columns: [GridItem] = Array(repeating: .init(.flexible(), spacing: gridSpacing), count: columnCount)
        let colCount: CGFloat = CGFloat(columnCount)
        var body: some View {
            GeometryReader { geo in
                ScrollView (showsIndicators: false) {
                    LazyVGrid(columns: columns, spacing: gridSpacing) {
                        ForEach(data, id: \.self) { item in
                            
                            Button(action: {
                                self.showingDetail.toggle()
                            }) {
                                GridCell(item: …
Run Code Online (Sandbox Code Playgroud)

scroll popover swiftui geometryreader lazyvgrid

6
推荐指数
1
解决办法
3297
查看次数

为什么将 SF 符号放入 UIImage 中,然后放入 SwiftUI Image View 中会导致图像模糊?

我正在尝试编写一个需要 UIImage 的公共初始化,但我想允许由照片(或以其他方式绘制)制作的正常的实际 UIImage 或使用 SF 符号,但我很困惑为什么 SF符号模糊。我缺少什么?

这是我得到的代码:

struct TempUIImageView: View {

    var defaultImage: UIImage = UIImage(systemName: "globe")!

    var defaultImageString: String = "globe"

    var body: some View {
        VStack  {
            Image(uiImage: defaultImage)
                .resizable()
                .scaledToFill()
                .aspectRatio(contentMode: .fit)
            Image(systemName: defaultImageString)
                .resizable()
                .scaledToFill()
                .aspectRatio(contentMode: .fit)
        }
        .padding()
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望在此使用一个解决方案:

@State private var displayedImage: UIImage?

...

private var displayImage: some View {
    Image(uiImage: displayedImage!)
        .resizable()
        .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .center)
        .scaledToFill()
        .aspectRatio(contentMode: .fit)
        .clipShape(Circle())
        .shadow(radius: 4)
}
Run Code Online (Sandbox Code Playgroud)

但 displayedImage 可以是 UIImage …

uiimage swiftui

2
推荐指数
1
解决办法
2998
查看次数

如何更新此自定义选取器动画并过渡到 iOS 15?

下面的代码在 iOS 15 上运行良好,但现在我收到警告'animation' was deprecated in iOS 15.0: Use withAnimation or animation(_:value:) instead.

环顾四周,看来我应该使用.animation(_, value: someValue)- 这确实消除了警告,但随后代码无法正确设置动画。我想这与选择器太快有关?id或者影响视图的选择器?

这是有效的代码,但当然,我更愿意使其与 iOS 15 保持同步:


struct SamplePickerSwap: View {
    let swapAnimation: Animation = .easeInOut(duration: 0.3333)
    let swapRight: AnyTransition = .asymmetric(
        insertion: .move(edge: .trailing),
        removal: .move(edge: .leading))
    let swapLeft: AnyTransition = .asymmetric(
        insertion: .move(edge: .leading),
        removal: .move(edge: .trailing))
    
    @State private var picker = 0
    @State private var segments = ["Left", "Right"]
    var body: some View {
        
        VStack {
            Picker("", …
Run Code Online (Sandbox Code Playgroud)

transition deprecation-warning ios-animations swiftui

2
推荐指数
1
解决办法
1452
查看次数