2015-02-28 27 views
6

Ben framwork aşağıda yöntemleri çağırmak, görüntü kaynakları içerir iOS çerçeve geliştiriyorum,Görüntü kaynaklarını içeren bir iOS çerçevesi nasıl geliştirilir?

crossImage = [UIImage imageNamed:@"cross"]; 
arrowImage = [UIImage imageNamed:@"arrow"]; 

ve sonra benim framework sınamak ama crossImage ve arrowImage nil hem bulmak için bir demo inşa; Daha sonra, imageNamed: yöntemi yönteminin, uygulamanın çerçevesindeki değil, uygulamanın dizininde arama yapacağını anladım, böylece demo resmine iki resim ekleyerek onu düzeltebilirim. Ancak, bu sadece zarif. çerçevelerimde görüntüleri hedeflemek için başka çözümler var mı?

cevap

0

, ben tüm resim kaynakları tutmak için bir paket oluşturmak ve biz * bu daha şık .framework ve * .bunlde var sağlarlar.

+1

Bunları nasıl sağladığınız konusunda daha net olabilir misiniz? Örnek kod yararlı olacaktır. – Herbal7ea

20

kullanarak çerçeve görüntüyü yükleyebilirsiniz:

+ (UIImage *)imageNamed:(NSString *)name 
       inBundle:(NSBundle *)bundle 
compatibleWithTraitCollection:(UITraitCollection *)traitCollection 

yöntemi. gibi çerçeve sınıf yazma olarak

:

NSBundle *frameWorkBundle = [NSBundle bundleForClass:[self class]]; 
UIImage *arrow = [UIImage imageNamed:@"arrow" inBundle:frameWorkBundle compatibleWithTraitCollection:nil]; 
UIImage *cross = [UIImage imageNamed:@"cross" inBundle:frameWorkBundle compatibleWithTraitCollection:nil]; 

bu yöntem hakkında daha fazla bilgi için UIImage Class Reference bakın.

+0

Önerdiğiniz yöntem yalnızca iOS 8.0 ve sonraki sürümleri destekliyor, eğer iOS 7.0 ve 6.0 sürümlerinde? –

+1

@GaojinHsu: iOS 7 ve 6.0 apple'daki AFAIK, özel çerçeveler oluşturmayı desteklemez. Bu amaç için Statik Kitaplığı ve özel paketi kullanın –

1

Ayrıca kullanarak görüntüler yükleyebilirsiniz:

[[UIImage alloc] initWithContentsOfFile:path]; 

Eğer paket yolundan oluşturmak isteyeceksiniz yolu. Resimlerinizi .xcasserts OLMADIĞINDAN sadece bu çalışacaktır

NSBundle *bundle = [NSBundle bundleForClass:[YourFramework class]]; 
NSString* path = [bundle pathForResource:@"cross.jpg" ofType:nil]; 
1

: gibi bir şey. Sonunda

UIImage *image = [UIImage imageNamed:@"YourFramework.framework/imageName"]