我在 SwiftUI 中有一个 SecureField。当这个 Field 获得焦点时(当用户点击它时)我想操纵一个 @State 属性来为 SecureField 应用偏移修饰符。当 SecureField 失去焦点时,@State 属性应该再次重置。如果键盘被切换,我想这样做是为了让 SecureField 可见。
我通过使用 TextField 的 onEditingChanged 参数实现了这一点,但 SecureField 不存在此参数。
如何使用 SwiftUI 中的 SecureField 执行此操作?
如果 TextField 被聚焦,这将应用偏移量:
import SwiftUI
let lightGreyColor = Color(red: 239.0/255.0, green: 243.0/255.0, blue: 244.0/255.0, opacity: 1.0)
struct ContentView : View {
@State private var textFieldString: String = ""
@State private var editingMode: Bool = false
var body: some View {
VStack {
SecureField($textFieldString, placeholder: Text("My placeholder"))
}
.padding()
.background(lightGreyColor)
.cornerRadius(10.0)
.padding()
.offset(y: editingMode …Run Code Online (Sandbox Code Playgroud) 我不确定这是否是 SwiftUI 特定的问题。无论如何,我有一个 UIImagePickerController,我使用 UIViewControllerRepresentableProtocol 将它实现到 SwiftUI 视图中:
struct ContentView: View {
@State var showCameraView = false
@State var showImagePicker = false
@State var UserImage = Image("user")
var body: some View {
VStack {
UserImage
.resizable()
.frame(width: 200, height: 200)
.scaledToFit()
.background(Color.gray)
.cornerRadius(200)
.clipped()
Button(action: {self.showImagePicker = true}) {
Text("Choose from camera roll")
}
.padding(.top, 10)
}
.sheet(isPresented: $showImagePicker) {
ImagePicker(showImagePicker: self.$showImagePicker, pickedImage: self.$UserImage)
}
}
Run Code Online (Sandbox Code Playgroud)
}
struct ImagePicker: UIViewControllerRepresentable {
@Binding var showImagePicker: Bool
@Binding var pickedImage: Image
func …Run Code Online (Sandbox Code Playgroud) 我试图创建一个包含 GeometryReader 的 ScrollView(明确不是相反)。GeometryReader 应包含具有固定宽度和高度的(图像)。然而,当这样做时,ScrollView 将视图推到屏幕“上方”,它似乎应用了一些随机的垂直偏移。
var body: some View {
ScrollView {
GeometryReader { geometry in
Image("hp")
.resizable()
.aspectRatio(contentMode: .fill)
.frame(width: geometry.size.width, height: 400)
.clipped()
}
}
}
Run Code Online (Sandbox Code Playgroud)
删除 GeometryReader 并仅插入图像时,它工作正常。
有人可以帮忙吗?
编辑:找到解决方案。我通过告诉图像它应该与内部几何读取器一样高和宽来实现所需的行为。然后我正在设置内部几何阅读器的框架。我正在使用外部几何阅读器来访问整个屏幕的尺寸
var body: some View {
GeometryReader { outerGeometry in
ScrollView {
VStack {
GeometryReader { innerGeometry in
Image("hp")
.resizable()
.aspectRatio(contentMode: .fill)
.frame(width: innerGeometry.size.width,
height: innerGeometry.size.height)
.offset(y: innerGeometry.frame(in: .global).minY/7)
.clipped()
}
.frame(width: outerGeometry.size.width, height: 300)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我希望它可以帮助某人!
我正在找出一种方法来获取数组中包含的类的值之和。我的设置如下:
class CustomClass {
var value: Int?
init(value: Int) {
self.value = value
}
}
Run Code Online (Sandbox Code Playgroud)
let object1 = CustomClass(value: 2)
let object2 = CustomClass(value: 4)
let object3 = CustomClass(value: 8)
let array: [CustomClass] = [object1, object2, object3]
Run Code Online (Sandbox Code Playgroud)
我目前的解决方案如下:
var sumArray = [Int]()
for object in array {
sumArray.append(object.value!)
}
let sum = sumArray.reduce(0, +)
Run Code Online (Sandbox Code Playgroud)
问题是,对于具有许多其他值的类来说,它变得非常复杂,有人知道更好的解决方案吗?