2013-02-13 4 views
0

Я использую RubyMotion. Сообщение об ошибке, которое я вижу в терминале:Добавление градиента к UIView вызывает ошибку

rake aborted! Сбой команды со статусом (1): [DYLD_FRAMEWORK_PATH = "/ Applications/Xcode.a ...] /Library/RubyMotion/lib/motion/project.rb:101:in block in <top (required)>' /usr/local/rvm/gems/ruby-1.9.3-p194/bin/ruby_noexec_wrapper:14:in Eval» /USR/местные/РВМ Задачи /gems/ruby-1.9.3-p194/bin/ruby_noexec_wrapper:14:in `»: TOP => по умолчанию => симулятор

Таким образом, ошибка происходит в файле, созданном самой RubyMotion, не один из моих файлов. Очевидно, что я все еще виноват. Я нашел строку, которая, похоже, вызывает ошибку. Вот соответствующий код подкласса UIViewController, который создает UIView и градиент:

def loadView 

    button1 = UIView.alloc.initWithFrame(CGRect.make(x:0, y:55, width:100, height:40)) 
    gradientLayer = CAGradientLayer.layer 
    gradientLayer.colors = NSArray.arrayWithObjects(UIColor.redColor.CGColor, UIColor.greenColor.CGColor, UIColor.blackColor.CGColor, nil) 

В то время как больше кода приходит позже, я обнаружил, что его строка gradientLayer.colors вызывает ошибку. Если я прокомментирую эту строку и все после нее в loadView, ошибка не возникает. Любая идея, в чем проблема?

+0

Нет ошибки над линией "rake aborted"? Откуда приходит CGRect.make? (Для меня я получаю NoMethodError, когда пытаюсь его использовать) - попробовали ли вы просто «CGRectMake (0, 55, 100, 40)» вместо? Используете ли вы какие-либо сторонние библиотеки? –

+1

Попробуйте следующее: 'gradientLayer.colors = [UIColor.redColor.CGColor, UIColor.greenColor.CGColor, UIColor.blackColor.CGColor]' –

+1

@JamonHolmgren - Это было! И, конечно, гораздо лучший способ создать массив. Если вы хотите опубликовать свой комментарий в качестве ответа, я буду рад отметить его как решение. – maxedison

ответ

1

У меня возникли проблемы с созданием массивов с использованием NSArray. Попробуйте следующее:

def loadView 
    button1 = UIView.alloc.initWithFrame(CGRect.make(x:0, y:55, width:100, height:40)) 
    gradientLayer = CAGradientLayer.layer 
    gradientLayer.colors = [ UIColor.redColor.CGColor, UIColor.greenColor.CGColor, UIColor.blackColor.CGColor ] 
    # ... 
end