0
我有许多不同的Coregraphics功能绘制出不同的表盘元素。我期望放在一起的逻辑基于从当前小时拉出的变量来确定显示钟表的哪个方面。所有的绘制方法都在一个单独的swift类/文件中列出。我怎样才能简化这个过程,将一个变量注入到名为?的方法中,而不是创建这个if语句的塔。在这里你可以看到drawCanvas04()与下午4点(或16小时)相关联。基于变量的调用方法(SWIFT)
class ViewController: UIViewController {
func updateTime() {
var date:NSDate = NSDate()
var calendar:NSCalendar = NSCalendar.currentCalendar()
var components:NSDateComponents = calendar.components(NSCalendarUnit.CalendarUnitHour | NSCalendarUnit.CalendarUnitMinute | NSCalendarUnit.CalendarUnitSecond, fromDate: date)
var hour = components.hour
var minute = components.minute
var seconds = components.second
var time = "\(hour) : \(minute) : \(seconds)"
println("\(time)")
if hour == 16 || hour == 04 {
ClockStyleKit.drawCanvas04()
} else {
if hour == 17 || hour == 05 {
ClockStyleKit.drawCanvas05()
} else {
if hour == 18 || hour == 06 {
ClockStyleKit.drawCanvas06()
} else {
if hour == 19 || hour == 07 {
ClockStyleKit.drawCanvas07()
} else {
if hour == 20 || hour == 08 {
ClockStyleKit.drawCanvas08()
} else {
if hour == 21 || hour == 09 {
ClockStyleKit.drawCanvas09()
} else {
if hour == 22 || hour == 10 {
ClockStyleKit.drawCanvas10()
}
if hour == 23 || hour == 11 {
ClockStyleKit.drawCanvas11()
}
if hour == 24 || hour = 12 {
ClockStyleKit.drawCanvas12()
}
}
这里是被称为stylekit平局方法的一个例子:
public class func drawCanvas07() {
//// Color Declarations
let color0 = UIColor(red: 0.894, green: 0.000, blue: 0.476, alpha: 1.000)
//// HOUR7 Drawing
var hOUR7Path = UIBezierPath(ovalInRect: CGRectMake(65.5, 155.99, 24, 24))
color0.setFill()
hOUR7Path.fill()
}
该drawrect方法应该坐在不同的类中,还是需要与时间计算方法嵌套?我很难构建代码来传递小时变量,而不会触发“Can not invoke'drawCanvas'类型为'(Int)'错误的参数列表。 – softdownfeathers
也似乎是我可以使用实例方法self的唯一方法。 drawCanvas是当我从StyleKit文件调用它的时候,否则它会引起我一个ClockStyleKit.drawCanvas()。 – softdownfeathers
再一次,不要使用类方法,你使用的是类方法,这就是为什么你必须做'ClockStyleKit.drawCanvas ()'。 – Schemetrical