小编vie*_*dev的帖子

SwiftUI:macOS 上 TextField 中较长文本的问题

当我在 macOS 上输入(或粘贴)文本TextField并且字符串需要的空间比可用空间更多时,TextField我期望出现某种随文本光标移动的滚动行为 - 就像世界上几乎每个文本字段一样。相反,我只能看到文本的开头,而无法再看到我的新输入。我什至无法手动滚动。只有当我放大TextField然后再次缩小它时,我才能滚动它。看视频:

Mac 文本字段

这是 SwiftUI 的错误吗?有任何已知的解决方案吗?

这是代码:

struct ContentView: View {
    @State private var text: String = ""
    var body: some View {
        TextField("", text: $text)
            .padding()
    }
}
Run Code Online (Sandbox Code Playgroud)

macos swift swiftui

10
推荐指数
1
解决办法
776
查看次数

iOS 15 中 UIButton 使用 UIButton.ConfigurationUpdateHandler 突出显示颜色

我正在尝试UIButton.Configuration在 iOS 15 中实现设计按钮,但在尝试设置突出显示状态的背景颜色时遇到了问题。我正在使用UIButton.ConfigurationUpdateHandler,它成功地更改了状态更改时的背景颜色:

let handler: UIButton.ConfigurationUpdateHandler = { button in
           switch button.state {
           case [.selected, .highlighted]:
               button.configuration?.baseBackgroundColor = .buttonHighlightColor
           case .selected:
               button.configuration?.baseBackgroundColor = .buttonHighlightColor
           case .highlighted:
               button.configuration?.baseBackgroundColor = .buttonHighlightColor
           case .disabled:
               button.configuration?.baseBackgroundColor = .buttonDisabledColor
           default:
               button.configuration?.baseBackgroundColor = .buttonDefaultColor
           }
    }
Run Code Online (Sandbox Code Playgroud)

虽然背景颜色发生变化,但突出显示时按钮顶部似乎仍然有某种白色半透明覆盖层:

在此输入图像描述

左边是按钮现在突出显示时的样子,右边是突出显示颜色应该是什么样子。

我首先认为这可能是因为按钮类型是系统,但即使使用自定义,问题仍然存在。使用之前从来没有遇到过这个问题UIButton.Configuration。有任何想法吗?

ios swift

9
推荐指数
1
解决办法
3751
查看次数

SwiftUI:.contextMenu 关闭时的通知(iOS)

我在视图上使用.contextMenuwith .onDrag,这似乎非常棘手:

通过设置为 true,背景颜色变为灰色dragging。这是由.onDrag打开上下文菜单时已经发生的情况触发的(有点早但还可以)。当我使用按钮关闭菜单时,我可以设置dragging为 false。当我使用拖动时,取消初始化dragging时状态会更改回 false 。ItemProvider到目前为止,一切都很好。

问题

当我点击上下文菜单外部将其关闭时,我似乎无法将dragging状态设置回 false。添加.onDisappearButton菜单中不起作用。

我在这里做错了什么?有什么方法可以在上下文菜单关闭时收到通知,或者在拖动实际开始时发生状态更改dragging(以便在打开上下文菜单时背景不会立即变为灰色)?

代码如下视频。

在此输入图像描述

struct ContentView: View {
    @State var dragging = false
    var body: some View {
        ZStack {
            Rectangle()
                .foregroundColor(.blue)
                .frame(width: 100, height: 100)
                .onDrag {
                    dragging = true
                    let provider =  ItemProvider(contentsOf: URL(string: "Test")!)!
                    provider.didEnd = {
                        DispatchQueue.main.async {
                            dragging = false
                        }
                    }
                    print("init ItemProvider")
                    return provider …
Run Code Online (Sandbox Code Playgroud)

ios swiftui

5
推荐指数
1
解决办法
1085
查看次数

CGColor 到 UIColor 转换

当我初始化 CGColor 并将其转换为 UIColor 时,它的渲染方式与使用相同值初始化的 UIColor 不同。如何在 CGColor 和 UIColor 之间进行转换并保持相同的外观?

此代码产生两种略有不同的颜色(参见屏幕截图),尽管我希望颜色相同:

self.view.backgroundColor = UIColor(red: 19/255.0, green: 25/255.0, blue: 28/255.0, alpha: 1.0)

let myCGColor = CGColor(red: 19/255.0, green: 25/255.0, blue: 28/255.0, alpha: 1.0)
self.secondView.backgroundColor = UIColor(cgColor: myCGColor)
Run Code Online (Sandbox Code Playgroud)

顶部:UIColor / 底部:CGColor->UIColor 顶部:UIColor 底部:CGColor->UIColor

ios swift

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

SwiftUI:无论配色方案如何,强制使用深色材质

无论当前的配色方案如何,是否可以在 SwiftUI 中强制使用深色或浅色材质?使用.preferredColorScheme会将配色方案应用于整个视图,而不仅仅是材质。原因是我正在使用,AVPlayer并且我需要覆盖额外的 UI,该 UI 应该与播放器 UI 的外观相匹配,该 UI 似乎总是使用深色材质。

我知道的唯一解决方法是UIBlurEffect通过 an 实现 an UIViewRepresentable,例如使用此包: https: //github.com/twostraws/VisualEffects

macos ios swiftui

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

SwiftUI:更改渐变颜色亮度

我正在尝试使用相同的颜色创建一个渐变,并在一端使用亮度修改器。我试过这个:

    let gradient = LinearGradient(
        colors: [Color.blue, Color.blue.brightness(0.1)],
        startPoint: .top, endPoint: .bottom)
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不会编译并出现以下错误:Cannot convert value of type 'some View' to expected element type 'Array<Color>.ArrayLiteralElement' (aka 'Color')

根据这个线程,我预计它会起作用。我怎样才能解决这个问题?

ios swift swiftui

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

SwiftUI:删除拖动视图的背景

我有一个可以拖动的圆角视图。开始拖动后,白色半透明背景视图将在角落可见。如何将其删除?

我尝试使用.contentShapeand.clipShape但这并不能解决问题。在 UIKit 中,我曾经UIDragPreviewParameters剪辑预览,但 SwiftUI 中似乎没有这样的东西。有任何想法吗?

代码:

RoundedRectangle(cornerRadius: 25, style: .continuous)
    .foregroundColor(.blue)
    .frame(width: 100, height: 100)
    .contentShape(RoundedRectangle(cornerRadius: 25, style: .continuous))
    .onDrag {
        NSItemProvider()
    }
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

macos ios swift swiftui

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

标签 统计

ios ×6

swift ×5

swiftui ×5

macos ×3