选择图片分享功能

This commit is contained in:
2025-08-17 22:08:25 +08:00
parent e6afca5ba6
commit d80289fe73
19 changed files with 1402 additions and 110 deletions

View File

@@ -0,0 +1,56 @@
import SwiftUI
import UIKit
// 1. UIKit
class ThickSlider: UISlider {
var trackHeight: CGFloat = 40 //
override func trackRect(forBounds bounds: CGRect) -> CGRect {
//
let original = super.trackRect(forBounds: bounds)
return CGRect(x: original.origin.x,
y: (bounds.height - trackHeight) / 2,
width: original.width,
height: trackHeight)
}
}
// 2. SwiftUI
struct CustomSlider: UIViewRepresentable {
@Binding var value: Double
var trackHeight: CGFloat
var tintColor: Color
func makeUIView(context: Context) -> ThickSlider {
let slider = ThickSlider()
slider.trackHeight = trackHeight
slider.minimumValue = 0
slider.maximumValue = 1
slider.value = Float(value)
slider.addTarget(context.coordinator, action: #selector(Coordinator.valueChanged(_:)), for: .valueChanged)
slider.tintColor = UIColor(tintColor)
return slider
}
func updateUIView(_ uiView: ThickSlider, context: Context) {
uiView.value = Float(value)
uiView.trackHeight = trackHeight
uiView.tintColor = UIColor(tintColor)
}
func makeCoordinator() -> Coordinator {
Coordinator(value: $value)
}
class Coordinator: NSObject {
@Binding var value: Double
init(value: Binding<Double>) {
_value = value
}
@objc func valueChanged(_ sender: UISlider) {
value = Double(sender.value)
}
}
}