2015-04-21 2 views
0

Я создаю UIButton (из CGPath), который инициализируется фреймом CGRect, но он не будет масштабироваться до размера его вида.Масштабирование CGPath & Class.Type не имеет имени с именем nameHere

Вместо этого я пытаюсь масштабировать траекторию, но Xcode не выглядит слишком довольным тем, что я делаю.

class MenuButton : UIButton { 
    let shortStrokeOrig: CGPath = { 
     let path = CGPathCreateMutable() 
     CGPathMoveToPoint(path, nil, 2, 2) 
     CGPathAddLineToPoint(path, nil, 28, 2) 

     return path 
    }() 

    let outlineOrig: CGPath = { 
     let path = CGPathCreateMutable() 
     CGPathMoveToPoint(path, nil, 10, 27) 
     // Blah blah more curves.... 
     CGPathAddCurveToPoint(path, nil, 13.16, 2.00, 2.00, 13.16, 2, 27) 

     return path 
    }() 

    let shortStroke: CGPath = CGPathCreateCopyByTransformingPath(shortStrokeOrig, CGAffineTransformMakeScale(0.5, 0.5)) 
    let outline: CGPath = CGPathCreateCopyByTransformingPath(outlineOrig, CGAffineTransformMakeScale(0.5, 0.5)) 
} 

Это приходит с ошибкой MenuButton.Type does not have a member named shortStrokeOrig и то же самое для outlineOrig.

Не знаете, почему он жалуется. Или если у кого есть какие-либо лучше предложения о том, как масштабировать свои пути ..

ответ

1

Проблема заключается в shortStroke постоянной инициализации - CGPathCreateCopyByTransformingPath(shortStrokeOrig, CGAffineTransformMakeScale(0.5, 0.5))

Проблемы:

  • shortStrokeOrig - объявлена ​​как переменная экземпляра но вы используете его как переменную класса.
  • Второй аргумент типа CGPathCreateCopyByTransformingPath функция UnsafePointer<CGAffineTransform> не CGAffineTransform.

Решение

  • Сделать shortStrokeOrig и outlineOrig относится к классу переменных
  • Pass CGAffineTransform в качестве эталона (создать переменную и использовать & при прохождении его функции)

Код:

class MenuButton : UIButton { 
    static let shortStrokeOrig: CGPath = { 
     let path = CGPathCreateMutable() 
     CGPathMoveToPoint(path, nil, 2, 2) 
     CGPathAddLineToPoint(path, nil, 28, 2) 

     return path 
     }() 

    static let outlineOrig: CGPath = { 
     let path = CGPathCreateMutable() 
     CGPathMoveToPoint(path, nil, 10, 27) 
     // Blah blah more curves.... 
     CGPathAddCurveToPoint(path, nil, 13.16, 2.00, 2.00, 13.16, 2, 27) 

     return path 
     }() 

    static var transform = CGAffineTransformMakeScale(0.5, 0.5) 
    let shortStroke: CGPath! = CGPathCreateCopyByTransformingPath(MenuButton.shortStrokeOrig, &transform) 
    let outline: CGPath = CGPathCreateCopyByTransformingPath(outlineOrig, &transform) 
} 
Смежные вопросы