【发布时间】:2015-08-15 15:12:48
【问题描述】:
我已经搜索并找不到任何可以帮助我格式化我的pickerview 中每一行的对齐方式的东西。
目前看起来是这样的:
我想要做的是右对齐左£行和左对齐右便士行,这样就没有差距,当前值将是 25.31 英镑,或者现在存在的大差距。
我发现了一些格式化背景和字体大小但不对齐的代码。
任何帮助或链接将不胜感激。
这是我完整的 ViewController 代码...
import Foundation
import UIKit
class LocationViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {
@IBOutlet weak var DisplayStartMileage: UITextField!
@IBOutlet weak var labelFuelAmount: UILabel!
@IBOutlet weak var spinFuelAmount: UIPickerView!
var mileageToPass: String!
var fuelAmount: Double = 0.00
var pickerData = [[String]]()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
var poundValues = [String]()
var penceValues = [String]()
for var indexP:Int = 0; indexP < 100; indexP += 1 {
poundValues.append("£ \(indexP)")
penceValues.append(NSString(format: ".%02d", indexP) as String)
}
self.pickerData = [poundValues, penceValues]
spinFuelAmount.delegate = self
spinFuelAmount.dataSource = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func FuelSegmentChanged(sender: UISegmentedControl) {
switch sender.selectedSegmentIndex
{
case 0:
labelFuelAmount.hidden = false
spinFuelAmount.hidden = false
case 1:
labelFuelAmount.hidden = true
spinFuelAmount.hidden = true
default:
break;
}
}
func numberOfComponentsInPickerView(spinFuelAmount: UIPickerView) -> Int {
return pickerData.count
}
func pickerView(spinFuelAmount: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return pickerData[component].count
}
func pickerView(spinFuelAmount: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
return pickerData[component][row]
}
func pickerView(spinFuelAmount: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
var firstComponent = pickerData[0][spinFuelAmount.selectedRowInComponent(0)]
firstComponent = firstComponent.stringByReplacingOccurrencesOfString( "£ ", withString: "" )
var secondComponent = pickerData[1][spinFuelAmount.selectedRowInComponent(1)]
secondComponent = secondComponent.stringByReplacingOccurrencesOfString( ".", withString: "" )
if let firstValue = firstComponent.toInt(), let secondValue = secondComponent.toInt() {
let fuelAmount = firstValue + secondValue / 100
}
}
func pickerView(spinFuelAmount: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString? {
let titleData = pickerData[row]
var myString1 = NSMutableAttributedString(string:titleData)
let myString1Font1 = UIFont(name:"AvenirNext-Regular", size:24.0)
let myString1Color1 = UIColor(red: 0.292745, green: 0.461693, blue: 0.998524, alpha: 1.000000)
let originalNSString = myString1.string as NSString
let myString1Range1 = originalNSString.rangeOfString(titleData)
var myString1ParaStyle1 = NSMutableParagraphStyle()
myString1ParaStyle1.baseWritingDirection = NSWritingDirection.Natural
myString1ParaStyle1.lineBreakMode = NSLineBreakMode.ByWordWrapping
myString1.addAttribute(NSUnderlineColorAttributeName, value:myString1Color1, range:myString1Range1)
myString1.addAttribute(NSParagraphStyleAttributeName, value:myString1ParaStyle1, range:myString1Range1)
myString1.addAttribute(NSFontAttributeName, value:myString1Font1!, range:myString1Range1)
if component == 0 {
myString1ParaStyle1.alignment = NSTextAlignment.Left
} else if component == 1 {
myString1ParaStyle1.alignment = NSTextAlignment.Right
}
return myString1
}
func pickerView(spinFuelAmount: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView!) -> UIView {
var pickerLabel = view as! UILabel!
if view == nil {
pickerLabel = UILabel()
let hue = CGFloat(row)/CGFloat(pickerData.count)
pickerLabel.backgroundColor = UIColor(hue: hue, saturation: 1.0, brightness:1.0, alpha: 1.0)
}
let titleData = pickerData[row]
var myString1 = NSMutableAttributedString(string:titleData)
let myString1Font1 = UIFont(name:"AvenirNext-Regular", size:24.0)
let myString1Color1 = UIColor(red: 0.292745, green: 0.461693, blue: 0.998524, alpha: 1.000000)
let originalNSString = myString1.string as NSString
let myString1Range1 = originalNSString.rangeOfString(titleData)
var myString1ParaStyle1 = NSMutableParagraphStyle()
myString1ParaStyle1.baseWritingDirection = NSWritingDirection.Natural
myString1ParaStyle1.lineBreakMode = NSLineBreakMode.ByWordWrapping
myString1.addAttribute(NSUnderlineColorAttributeName, value:myString1Color1, range:myString1Range1)
myString1.addAttribute(NSParagraphStyleAttributeName, value:myString1ParaStyle1, range:myString1Range1)
myString1.addAttribute(NSFontAttributeName, value:myString1Font1!, range:myString1Range1)
pickerLabel!.attributedText = myString1
if component == 0 {
myString1ParaStyle1.alignment = NSTextAlignment.Left
} else if component == 1 {
myString1ParaStyle1.alignment = NSTextAlignment.Right
}
return pickerLabel
}
}
【问题讨论】:
标签: ios swift uipickerview