不幸的是,當我在 SwiftUI 中使用 UIViewRepresenable 創建 UIPickerView 時,它并沒有填滿整個螢屏。我也試過給它很多幀修飾符,但沒有任何效果。有沒有人對此有解決方案或知道為什么整個螢屏的寬度沒有被選擇器填充?最好的祝福
這是代碼:
struct MultiComponentsPicker: UIViewRepresentable {
@Binding var hours: Int
@Binding var minutes: Int
@Binding var seconds: Int
func makeUIView(context: Context) -> UIPickerView {
let pickerView = UIPickerView()
pickerView.delegate = context.coordinator
pickerView.dataSource = context.coordinator
return pickerView
}
func updateUIView(_ uiView: UIPickerView, context: Context) {
}
func makeCoordinator() -> Coordinator {
Coordinator(self)
}
class Coordinator: NSObject, UIPickerViewDataSource, UIPickerViewDelegate {
let parent: MultiComponentsPicker
init(_ parent: MultiComponentsPicker) {
self.parent = parent
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 6
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if component == 0 {
return 24
}
else if component == 1 {
return 1
}
else if component == 2 {
return 60
}
else if component == 3 {
return 1
}
else if component == 4 {
return 60
}
else if component == 5 {
return 1
}
return 0
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if component == 0 {
return "\(row)"
}
else if component == 1 {
return "Std."
}
else if component == 2 {
return "\(row)"
}
else if component == 3 {
return "Min."
}
else if component == 4 {
return "\(row)"
}
else if component == 5 {
return "Sek."
}
return ""
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if component == 0 {
parent.hours = Int(row.description)!
}
else if component == 2 {
parent.minutes = Int(row.description)!
}
else if component == 4 {
parent.seconds = Int(row.description)!
}
}
}
}
這就是它的樣子:

uj5u.com熱心網友回復:
在 UIViewRepresentable 中:
// allows rows to be compressed
pickerView.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
// allows rows to be expanded
pickerView.setContentHuggingPriority(.defaultLow, for: .horizontal)
在視圖中:
MultiComponentsPicker(hours: $hours, minutes: $minutes, seconds: $seconds)
.frame(width: .infinity) // or fixed size
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/445412.html
標籤:代码 迅捷 uipickerview uiviewrepresentable
