您将需要为UIPickerViewDelegate协议实现更多的委托方法。特别是rowHeight委托方法和viewForRow委托方法。
就像是:
// MARK: UIPickerViewDataSourcefunc numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { return 1}func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { return 2} func pickerView(pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat { return 60}// MARK: UIPickerViewDelegatefunc pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView!) -> UIView { var myView = UIView(frame: CGRectMake(0, 0, pickerView.bounds.width - 30, 60)) var myImageView = UIImageView(frame: CGRectMake(0, 0, 50, 50)) var rowString = String() switch row { case 0: rowString = “Washington” myImageView.image = UIImage(named:"washington.jpg") case 1: rowString = “Beijing” myImageView.image = UIImage(named:"beijing.jpg") case 2: default: rowString = "Error: too many rows" myImageView.image = nil } let myLabel = UILabel(frame: CGRectMake(60, 0, pickerView.bounds.width - 90, 60 )) myLabel.font = UIFont(name:some font, size: 18) myLabel.text = rowString myView.addSubview(myLabel) myView.addSubview(myImageView) return myView}func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { // do something with selected row}请注意,标签布局等仅用于演示,需要进行调整,或者最好使用自动布局ect。



