如何在 SwiftUI 中将苹果 ColorPicker 的布局从圆形更改为方形?

2023-11-26

ColorPicker默认的按钮样式是圆形,如下所示。

enter image description here

我想将圆形按钮的样式更改为矩形。但似乎没有 API 可以改变它的风格。所以我在它上面放了一个矩形,并将它的 allowedHitTesting 设置为 false 以将单击事件传输到 ColorPicker。

enter image description here

struct ColorPickerView: View {
    @State private var colorValue = Color.orange
    var body: some View {
        ZStack() {
            ColorPicker("", selection: $colorValue)
                .labelsHidden()
            Rectangle()
                .foregroundColor(.blue)
                .frame(width: 40, height: 40, alignment: .center)
                .allowsHitTesting(false)
        }
    }
}

但是点击后ColorPicker没有出现。

我在矩形下面放了一个圆圈来测试allowsHitTesting是否有用。它可以正常响应点击手势打印“Circle tapped!”。

struct ColorPickerView: View {
    @State private var colorValue = Color.orange
    var body: some View {
        ZStack() {
            ColorPicker("", selection: $colorValue)
                .labelsHidden()
            Rectangle()
                .foregroundColor(.blue)
                .frame(width: 40, height: 40, alignment: .center)
                .onTapGesture {
                    print("Circle tapped!")
                }
            Rectangle()
                .foregroundColor(.blue)
                .frame(width: 40, height: 40, alignment: .center)
                .allowsHitTesting(false)
        }
    }
}

为什么ColorPicker无法响应点击手势?或者有没有办法自定义ColorPicker按钮?


只需使用opacity,并发送选色器 to overlay,就像代码中一样:


enter image description here

struct SquareColorPickerView: View {
    
    @Binding var colorValue: Color
    
    var body: some View {
        
        colorValue
            .frame(width: 40, height: 40, alignment: .center)
            .cornerRadius(10.0)
            .overlay(RoundedRectangle(cornerRadius: 10.0).stroke(Color.white, style: StrokeStyle(lineWidth: 5)))
            .padding(10)
            .background(AngularGradient(gradient: Gradient(colors: [.red,.yellow,.green,.blue,.purple,.pink]), center:.center).cornerRadius(20.0))
            .overlay(ColorPicker("", selection: $colorValue).labelsHidden().opacity(0.015))
            .shadow(radius: 5.0)

    }
}

使用案例:

struct ContentView: View {
    
    @State private var colorValue = Color.orange
    
    var body: some View {

        SquareColorPickerView(colorValue: $colorValue)

    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 SwiftUI 中将苹果 ColorPicker 的布局从圆形更改为方形? 的相关文章

  • SwiftUI:再次点击所选选项卡时弹出到根视图

    起点是 TabView 中的 NavigationView 我正在努力寻找一个 SwiftUI 解决方案 以便在再次点击所选选项卡时弹出到导航堆栈中的根视图 在 SwiftUI 之前的时代 这很简单 func tabBarControlle
  • 创建自定义颜色集 TinyMCE

    我已经能够为 TinyMCE 创建自己的字体颜色选择器 但是调色板链接到原始颜色选择器 我想做的是使我的自定义颜色选择器完全独立于原始颜色选择器 这样我可以同时显示两者 这是我当前的代码 这可以工作 但是两个按钮的调色板是相同的 tinym
  • SwiftUI Focus State API 环境变量不起作用

    当我们想要观察 SwiftUI 文本字段的焦点状态时 环境值 isFocused 似乎不起作用 除了将值传递给 TextFieldStyle 的 init 我们必须为每个 Textfield 执行此操作 之外 还有其他方法可以做到这一点吗
  • SwiftUI:如何在没有 AppDelegate 的情况下强制横向

    我正在制作带有视频播放器的应用程序 除了这个视频播放器之外 我的整个结构仅用于纵向视图 我想仅为该视图启用横向旋转 但我查过很多论坛 每个答案都是向 App Delegate 添加一些代码 但我没有 那我能做什么呢 这是给您的演示 您可以通
  • '迭代时不能对不可变值使用变异 getter:'self' 是不可变的'?

    有谁知道为什么self indexCount in the ForEach给出了错误Cannot use mutating getter on immutable value self is immutable错误 我可以提供aView w
  • 如何在 swiftui 中使用 .quickLookPreview 修饰符

    我正在尝试使用视图修饰符 quickLookPreview在 iOS 14 macOS 11 macCatalyst 14 中引入 但我收到此错误Value of type some View has no member quickLook
  • SwiftUI 预览的 Xcode Canvas 不显示

    我正在尝试从 Xcode 11 运行新的 Canvas 功能 但 Canvas 不会显示 我究竟做错了什么 这个新的 Xcode 功能应该在不运行应用程序的情况下显示我的 SwiftUI 视图的实时预览 当您使用 SwiftUI 创建自定义
  • 在视图之间传递变量 SwiftUI

    再次基本问题 我想让变量 anytext 对于我要添加的所有未来视图都可见且可访问 在我的例子中 变量将是String 如果是的话 程序会改变吗 Float 我怎样才能将其另存为全局变量 如果我重新启动应用程序 变量会自行删除吗 如何保存即
  • SwiftUI 模态视图

    从任何类或结构中模态显示 SwiftUI 视图的最佳方式是什么 我使用 UIKit 中的 UIHostingController 有没有更好的方法只使用 SwiftUI 来做到这一点 带有用于呈现 SwiftUI 视图的按钮的 Conten
  • 使用 SwiftUI 的新 iOS 14 生命周期访问 AppDelegate 中的 AppState

    我正在使用 iOS 14 中推出的 SwiftUI 新应用程序生命周期 但是 我不知道如何访问我的AppState 单一事实来源 对象应用程序代理 我需要应用程序代理在启动时运行代码并注册通知 didFinishLaunchingWithO
  • SwiftUI - 方向更改后,NavigationView 标题和后退按钮被夹在状态栏下

    每当我将设备旋转到横向并再次返回时 顶部NavigationView 包括标题和后退按钮 被剪切在状态栏下方 最小可重现示例 struct ContentView View var body some View NavigationView
  • SwiftUI - 正确使用 @available() 和 #available

    我在下面的代码中遗漏了什么吗 此应用程序在 iOS 15 设备上构建 macOS Monterey b5 Xcode 13 b5 并完美执行 但在 iOS 14 7 设备上导致 SIGABRT import SwiftUI struct C
  • 如何在 SwiftUI 中导航到另一个视图时消除动画故障

    当导航到 SwiftUI 中包含列表的视图时 模拟器和真实设备上都会出现动画故障 就在导航动画结束时 列表项似乎 跳 了几个像素到其指定位置 请参阅以下简单示例 内容视图 struct ContentView View var body s
  • Swift TTS,无音频输出

    我尝试在我的应用程序 TTS 中集成 但如果单击按钮 则没有音频输出 这是按钮代码 struct VocabDetailView View var body some View HStack Button Play readOut text
  • textFieldDidChangeSelection:在视图更新期间修改状态,这将导致未定义的行为

    这是我的代码 struct CustomTextField UIViewRepresentable var placeholder String Binding var text String func makeUIView context
  • 按下后退按钮时 SwiftUI 工具栏项目被剪裁

    我在 SwiftUI 中遇到了一种奇怪的行为 我似乎无法解决它 鉴于以下简单的示例应用程序 我遇到了这种行为 工具栏项目在初始运行时正确呈现 但导航离开并返回它会被剪切 重新创建此示例代码 内容视图 swift import SwiftUI
  • 如何在 Swiftui 中使列表项行内的按钮不可点击?

    有没有办法让列表的整行都不可点击 我正在尝试使按钮行上只有按钮可单击 正如您所看到的 如果我尝试单击按钮行中的任何位置 无论是按钮本身 还是按钮周围的空白区域 它都会将其视为点击 有没有办法让您只能单击按钮本身 而不能单击按钮周围的白色间距
  • SwiftUI 转义闭包捕获变异的“self”参数

    我有一个可以通过两种方式打开的视图 一个包含提供给它的数据 另一个包含对 Firestore 文档的文档引用 我创建了两个构造函数 在第一个构造函数中我提供数据 在另一个构造函数中我提供文档参考 然后我使用此引用进行网络调用 但出现错误 E
  • SwiftUI 未知属性“可观察对象”

    所以我收到错误未知属性ObservableObject旁边的 ObservableObject var dataSource DataSource 下面打电话 这ObservableObject几天前在另一个项目中工作得很好 但现在不行了
  • 在 SwiftUI 中,如何执行手势但将手势转发到其后面的视图?

    我正在创建一个工具提示系统 如果用户触摸工具提示之外的任何地方 我想关闭工具提示 我希望这样在工具提示之外的触摸既可以消除工具提示 又可以激活用户点击的任何控件 因此 您可以打开一个工具提示 然后仍然单击工具提示外部的按钮 并在第一次点击时

随机推荐

  • 通过 TCP 连接发送大文件

    我需要通过互联网将一些大文件发送到计算机 结果我打开了路由器上打算使用的端口并转发相应的IP地址 无论如何 让我向您展示我为了实现这一目标而一直在努力的课程 这些类对于小文件工作得很好 但有时对于大文件则失败 这是服务器的代码 它是一个控制
  • 如果 getc() 通过 SIGINT 退出,则 getc() 后面的未定义行为是否会改变程序行为

    根据 未定义行为 的现代解释 编译器有权假设不会发生导致未定义行为 不可避免 的事件链 并且可以消除仅适用于代码将要执行的情况的代码未定义的行为 这可能会导致未定义行为的影响及时倒退 并使本来可以观察到的行为无效 另一方面 如果除非程序终止
  • 使用 Windows 身份验证的 Intranet 应用程序是否需要 ASP.NET Core Identity

    在 Intranet Web 应用程序中使用 Windows 身份验证我想实现以下目标 从 AD 收集其他属性 姓名 员工编号 从数据库表中收集其他属性 工作时间 工资 根据应用程序角色 而不是 AD 组 进行授权 基于 AD 属性授权 有
  • Draw.io——是否有未缩小的源代码?

    我们正在尝试使用最新的 Draw io 存储库 并修改 javascript 客户端代码以更改其某些行为以改进用户体验 但是 我们能找到的唯一最新来源是这里 https github com jgraph draw io tree mast
  • fstream 读/写是否移动文件指针

    这是一个我希望能够轻松回答的简单问题 文件流读写操作是否会移动指针 举个例子 cpos 10000 for i 0 i lt 20 i dataFile seekg cpos i ios beg dataFile read carray i
  • 何时使用虚拟析构函数?

    我对大多数都有深入的了解OOP理论 但让我很困惑的一件事是虚拟析构函数 我认为无论如何 对于链中的每个对象 析构函数总是被调用 您打算什么时候将它们虚拟化 为什么 当您可能通过指向基类的指针删除派生类的实例时 虚拟析构函数非常有用 clas
  • ggvis 中带有数字的热图

    我正在尝试使用 ggvis 中 ggplot2 中的数字复制热图 ggplot2版本是 library ggplot2 hec lt as data frame xtabs Freq Hair Eye HairEyeColor ggplot
  • 将第三方js文件导入到Angular TypeScript项目中

    在我使用 Angular 的经历中 我被迫使用四种不同的方式来包含第 3 方库poliglot js 对于多语言 所以能够使用new Polyglot 在我的朗课上 export class Lang constructor this po
  • iPhone/iPad 上的 PDF 超链接

    我一直在浏览谷歌和SO 但还没有找到我的问题的答案 或者至少没有找到更新的答案 我有一个包含超链接 热点的 PDF 并且想在我自己的 iPhone iPad 应用程序中显示该 PDF 文件 当用户单击超链接 热点时 我希望将用户带到链接的适
  • JPA ManyToMany,JoinTable怎么会有属性?

    我有一个关于EJB中ManyToMany设计的问题 jointable如何拥有属性 举个例子 学生和课程都是ManyToMany 每个学生有很多门课程 很多学生选择一门课程 Entity public class Student imple
  • 聚焦时更改 mat-select-arrow 和 mat-select-underline

    到目前为止 我已经尝试了很多不同的事情 例如 deep mat select focus mat select trigger mat select arrow color 63961C deep mat select focus mat
  • 平滑这个 jQuery 切换动画吗?

    所制作的动画我的 jQuery 函数不稳定 我一直在寻找不同的 SO 解决方案 例如添加 jquery easing 但没有运气 问题是每个 div 中的 iframe 吗 关于如何平滑动画有什么想法吗 我的基本切换功能是最好的方法吗 JS
  • Codeigniter 4 - 如何显示404页面?

    这是一个非常愚蠢的问题 但我无法处理它 在 Codeigniter 3 中 我只是在任何控制器中使用 show 404 函数来显示 404 页面 我怎样才能用 Codeigniter 4 做同样的事情 我刚才正在寻找同样的东西 我在这里找到
  • Angular 2. 如何在 Observable 中使用重定向处理 4xx 错误?

    我有一个调用 api 的服务 getItems itemId number Observable
  • 在实体框架 6 中调用标量值函数

    如何在实体框架 6 中调用标量函数 我尝试过以下代码 using MhEntities DContext new MhEntities var Account IdParameter Account Id HasValue new Obje
  • PHP 取消链接不起作用

    我正在尝试使用 unlink 删除 php 中的照片 我之前在其他服务器上使用过它 但这次它不起作用 我已经使用绝对路径进行测试 但仍然不起作用 我把它用作 取消链接 img1 jpg and unlink http www mysite
  • Django ORM 在注释多个聚合列时删除不需要的 Group by

    我想在 django ORM 中创建一个类似这样的查询 SELECT COUNT CASE WHEN myCondition THEN 1 ELSE NULL end as numyear FROM myTable 以下是我编写的 djan
  • Rails 设计,没有路线匹配注销

    尽管有很多类似的问题 但我已经搜索了几个小时但仍然无法解决它 环境 导轨3 0 9 红宝石 1 9 2 设计1 4 2 我使用以下方法更改了默认登录网址 5 resources users 6 devise for users path g
  • 如何在VS2015中构建OpenSSL:x86cpuid.asm是一个空文件

    我需要为使用 VS2015 32 位 的项目构建 OpenSSL 我找到的说明是http developer covenanteyes com building openssl for visual studio 据报道 更新 编辑版本使用
  • 如何在 SwiftUI 中将苹果 ColorPicker 的布局从圆形更改为方形?

    ColorPicker默认的按钮样式是圆形 如下所示 我想将圆形按钮的样式更改为矩形 但似乎没有 API 可以改变它的风格 所以我在它上面放了一个矩形 并将它的 allowedHitTesting 设置为 false 以将单击事件传输到 C