选择图片分享功能
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user