Ios 调整UIPickerView字体大小
我看到了许多针对UIPickerView字体大小的解决方案,但它们似乎都基于基于文本的数组和/或需要UIViewController。 我在UITableViewCell中使用Int数组,似乎找不到与我试图实现的目标相匹配的东西 代码如下:Ios 调整UIPickerView字体大小,ios,swift,uipickerview,Ios,Swift,Uipickerview,我看到了许多针对UIPickerView字体大小的解决方案,但它们似乎都基于基于文本的数组和/或需要UIViewController。 我在UITableViewCell中使用Int数组,似乎找不到与我试图实现的目标相匹配的东西 代码如下: import UIKit class AirTemperatureTableViewCell: UITableViewCell, UIPickerViewDelegate, UIPickerViewDataSource { let number
import UIKit
class AirTemperatureTableViewCell: UITableViewCell, UIPickerViewDelegate, UIPickerViewDataSource
{
let numberOfComponents: Int = 2
let temperatureComponentRows: Int = 501
let temperatureSymbolComponentRows: Int = 2
let Fahrenheit: String = "F"
let Celsius: String = "C"
let minDegrees = -250
let maxDegrees = 250
private var degrees: Array<Int> = [Int]()
var temperature: Int = 30 // our default temperature
var temperatureType: String = "C" // our default type is Celsius
@IBOutlet var airTemperaturePicker: UIPickerView!
override func awakeFromNib()
{
super.awakeFromNib()
for i in self.minDegrees ..< self.maxDegrees+1
{
self.degrees.append(i)
}
self.airTemperaturePicker.selectRow(280, inComponent: 0, animated: true)
}
override func setSelected(selected: Bool, animated: Bool)
{
super.setSelected(selected, animated: animated)
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int
{
return self.numberOfComponents
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int
{
if component == 0
{
return self.temperatureComponentRows
}
else
{
return self.temperatureSymbolComponentRows
}
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?
{
//
// If we are component 0, the degrees, return the value for the given row.
//
if component == 0
{
return String(self.degrees[row])
}
else
{
if row == 0
{
return self.Celsius
}
else
{
return self.Fahrenheit
}
}
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
{
}
}
导入UIKit
类别AirTemperatureTableViewCell:UITableViewCell、UIPickerViewDeleteGate、UIPickerViewDataSource
{
设numberOfComponents:Int=2
设温度组件行:Int=501
设温度SYMBOLComponentRows:Int=2
让华氏温度:String=“F”
设为:String=“C”
让minDegrees=-250
设maxDegrees=250
私有变量度:数组=[Int]()
变量温度:Int=30//我们的默认温度
var temperatureType:String=“C”//我们的默认类型是摄氏度
@IBVAR出口空气温度Epicker:UIPickerView!
重写func awakeFromNib()
{
super.awakeFromNib()
对于self.minDegrees中的i.Int
{
返回self.numberOfComponents
}
func pickerView(pickerView:UIPickerView,numberOfRowsInComponent:Int)->Int
{
如果组件==0
{
返回self.temperatureComponent行
}
其他的
{
返回自身温度SYMBOL组件行
}
}
func pickerView(pickerView:UIPickerView,titleForRow行:Int,forComponent组件:Int)->String?
{
//
//如果我们是组件0,则返回给定行的值。
//
如果组件==0
{
返回字符串(self.degrees[行])
}
其他的
{
如果行==0
{
返回自我。摄氏度
}
其他的
{
返回自身华氏温度
}
}
}
func pickerView(pickerView:UIPickerView,didSelectRow行:Int,不完整组件:Int)
{
}
}
任何帮助都将不胜感激。您应该在
UITableViewCell
子类中使用UIPickerViewDelegate
函数viewForRow
,如下所示:
func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView?) -> UIView {
let view = UIView(frame: picker.frame)
let label = UILabel(frame: picker.frame)
label.textAlignment = .Center
label.text = String(degrees[row])
label.font = UIFont(name: "Arial", size: 15)
label.adjustsFontSizeToFitWidth = true
view.addSubview(label)
return view
}
picker
是一个@IBOutlet
,用于UITableView
子类集中的UIPickerView
,使用原型单元格或外部nib和控件拖动。另外,请确保在awakeFromNib
中设置选择器
的委托
和数据源
属性
override func awakeFromNib() {
super.awakeFromNib()
picker.dataSource = self
picker.delegate = self
//Your Code Below
}
这将使用您选择的UILabel创建单元格宽度pickerView。您可以将UILabel与UIPickerViewData源的viewForRow方法一起使用。然后,您可以使用所有常规标签选项对其进行配置,包括设置字体大小、颜色等:
// goes in lieu of titleForRow if customization is desired
func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView?) -> UIView {
let pickerLabel = UILabel()
if component == 0 {
pickerLabel.textColor = .darkGrayColor()
pickerLabel.textAlignment = .Center
pickerLabel.text = String(self.degrees[row])
pickerLabel.font = UIFont(name:"Helvetica", size: 28)
} else {
pickerLabel.textColor = .redColor()
pickerLabel.textAlignment = .Center
pickerLabel.font = UIFont(name:"Helvetica", size: 28)
if row == 0 {
pickerLabel.text = self.Celsius
} else {
pickerLabel.text = self.Fahrenheit
}
}
return pickerLabel
}
谢谢,艾克。我尝试了这个方法,但是“label.text=degrees[row]”返回一个错误,即我无法将“int”类型的值分配给“string”类型。抱歉,遗漏了一些内容。查看我的编辑@戴维桑福德。您需要将数字转换为字符串。更好的是,它修复了int-to-String错误。但现在,出于某种奇怪的原因,什么也没有显示。我在字体名称上加上了“Arial”,但还是不走运。我想我可能发现了一个问题。有两个组件,一个是int,一个是字符串。你能重新发布原始版本吗?这样我就可以用它作为字符串选项了?@DavidSanford查看我的编辑。虽然使用外部NIB文件比较复杂,但这与我的答案有什么不同吗?Caxix,我删除了…而且效果很好。唯一的问题是我丢失了我的“C”或“F”符号。我怎样才能让他们回来?我在else子句中用这些案例更新了我的答案。您可能需要使用自定义颜色、对齐方式等进行一些附加格式设置。。