我正在构建一个自定义UIPickerView,我想向用户显示的信息不仅仅是一行文字。为了做到这一点,我正在构建一个自定义视图以显示在UIPickerView中(最终应该显示标题,图像和3行文本)。
测试第一个版本,我得到了整个运行,但有一些不寻常的视觉错误。这是他们的样子(我目前只显示标题,其余的是空白的白色背景,UIPickerView有浅灰色背景来区分两者):
当我第一次加载视图时,我只能看到UIPickerView的灰色。我通过调用func pickerView(pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat
并将其设置为300来调整"选择窗口。
在UIPickerView上向上和向下滑动显示实际上存在我为其创建的视图。可以看到它们消失在视图的顶部区域。
最后,在完全向下滚动并再次向上滚动之后,我可以清楚地看到第一个项目/视图。但就是这样,其他自定义视图在滚动它们时仍保持隐藏或仅在顶部可见#34;远离"。
以下是我如何通过自定义类创建单个视图(然后我只是将它们附加到数组中):
class PickerView: UIView {
// MARK: Variables
var titleLabel: UILabel = UILabel()
// MARK: - Init
init(frame: CGRect, name: String) {
super.init(frame: frame)
self.backgroundColor = UIColor.whiteColor()
addTitle(name)
}
required init?(coder aDecoder: NSCoder) {
fatalError("NSCoding not supported")
}
// MARK: - Functions
func addTitle(title: String) {
// basic setup
titleLabel.text = title
titleLabel.font = UIFont(name: "Apple SD Gothic Neo", size: 20.0)
titleLabel.sizeToFit()
// position the title
let x = (self.bounds.size.width - titleLabel.bounds.size.width) / 2
titleLabel.frame = CGRectMake(x, 5, titleLabel.bounds.size.width, titleLabel.bounds.size.height)
self.addSubview(titleLabel)
}
}
数组函数(创建具有不同值的几个PickerView类并将它们附加到数组中)被调用如下:PickerViewBuilder().getViewArrayForDimensions(filmPicker.bounds.size.width, height: pickerViewHeight)
如果有人能指出我的方向,我真的很高兴(我现在能做的就是或多或少地随机尝试不同的设置/变量)。它与故事板设置有关,还是我的代码中的东西?
感谢您的帮助!