2011-09-18 99 views
11

我正在嘗試在可可觸摸中使用漸變。我使用下面的代碼是:Objective-C - 未定義符號

#import <QuartzCore/QuartzCore.h> 

CAGradientLayer *gradient = [CAGradientLayer layer]; 
gradient.frame = mainView.bounds; 
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor blackColor] CGColor], (id)[[UIColor whiteColor] CGColor], nil]; 
[mainView.layer insertSublayer:gradient atIndex:0]; 

,但我得到以下錯誤,當我嘗試編譯:

爲i386硬件架構未定義的符號:
「_OBJC_CLASS _ $ _ CAGradientLayer」,引用從:在OfficeViewController.o LD objc級-REF:符號(多個)不爲i386硬件架構collect2發現 :LD返回1個退出狀態

我試圖做一個乾淨的無濟於事。我真的不知道我還能做什麼?

回答

48

確保實際上在您的項目中包含了QuartzCore框架。它應該在Link Binary With Libraries階段:

enter image description here

+5

到達該屏幕的步驟在這裏拼寫:http://stackoverflow.com/a/6961788/338265 –

+1

另一個問題是,當你這樣做時,Xcode可能會添加框架,但對於錯誤的目標。確保爲您正在構建的目標選擇框架 – pheelicks

3

您是否也將QuartzCore框架包含到項目中?僅添加標頭是不夠的。

+0

謝謝。但爲什麼我可以使用QuartzCore的一些函數(不需要添加QuartzCore框架)就像圖層屬性一樣? –