swift - 制作水平UIPickerView

标签 swift uipickerview

我正在尝试制作一个水平 UIPickerView。但我对宽度有一些问题。正如您可以在上图顶部看到的 enter image description here

我希望 PickerView 的宽度 = view.frame.size.width,但由于某种原因它保持非常小。在我的代码中我有:

let cityPicker = UIPickerView()
var rotationAngle: CGFloat!
let width:CGFloat = 100
let height:CGFloat = 100

override func viewDidLoad() {
        super.viewDidLoad()
cityPicker.delegate = self
        cityPicker.dataSource = self
        cityPicker.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: 50)
        self.view.addSubview(cityPicker)
        rotationAngle = -90 * (.pi/180)
        cityPicker.transform = CGAffineTransform(rotationAngle: rotationAngle)

        }

  func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }

    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return byer.count
    } 

    func pickerView(_ pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat {
        return 100
    }

    func pickerView(_ pickerView: UIPickerView, widthForComponent component: Int) -> CGFloat {
        return 100
    }

    func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
        let view = UIView()
        view.frame = CGRect(x: 0, y: 0, width: width, height: height)

        let label = UILabel()
        label.frame = CGRect(x: 0, y: 0, width: width, height: height)
        label.textAlignment = .center
        label.font = UIFont (name: "Baskerville-Bold", size: 30)
        label.text = byer[row]
        view.addSubview(label)

        view.transform = CGAffineTransform(rotationAngle: 90 * (.pi/180))
        return view
    }

有人能看出我做错了什么吗?

最佳答案

您应该只使用自动布局,但如果您想要手动布局,则不能在 viewDidLoad 中使用 View 框架。此时,框架将等于 Storyboard 或 nib 文件中的内容,并且不会反射(reflect)实际的设备或 View 层次结构。您应该将手动调整大小逻辑放在 viewDidLayoutSubviews 中。当调用此函数时,您的 View 具有正确的大小,您可以使用它来设置 subview 。

关于swift - 制作水平UIPickerView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49334165/

相关文章:

ios - Sprite Kit 创建 iAdBanner

ios - 点击屏幕时的小延迟/抖动

iOS Firebase/Firestore 权限被拒绝

ios - 快速读取 JSON 解析到 NSArray 时出现段错误

ios - CoreData ValueTransformer.transformedValueClass() 在 Swift 3 中从未被调用

ios - UIPickerview 的 UITextfield 问题

ios - Swift/iOS - 什么是多个 android 下拉列表的替代方案

objective-c - 检查 UIPickerView 是显示还是隐藏? *如果*条件?

ios - 如何使用UIAppearance设置UIPickerView的背景颜色?

objective-c - 如何通过单击按钮更改 UIPickerView 中行的大小?