2011-12-25 41 views
2

我知道每個imageView都有一個圖層(我們可以通過它訪問它:imageView.layer)。我想使用我的圖層imageView並向它的圖層添加一個subLayer:shapeLayer (這是一個CAShapeLayer)我的代碼不起作用,它不顯示形狀圖層!將subLayer添加到imageView.layer

- (void)viewDidLoad 
{ 
    imageView = [[UIImageView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)]; 
    [self.view addSubview:imageView]; 
} 

- (void)anotherMethod 
{ 
    [imageView.layer addSublayer:shapeLayer]; 
} 

我該如何解決這個問題?

回答

3

試試這個:

[outputImage.layer insertSublayer:shapeLayer atIndex:0]; 
+3

沒有它不工作:( – 2011-12-25 19:10:39

0

假設你正在談論只有一個的UIImageView(ImageView的== outputImage ???)

//in another method: 
{ 
    [imageView.layer addSublayer:shapeLayer]; //Where is outputImage initialized? 
} 
+0

看看我的編輯 – 2011-12-25 20:53:59

+0

我認爲的代碼是正確的,便有可能是因爲該形狀層是空的/不存在(寬度或高度== 0)?嘗試'[self.view.layer addSublayer:shapeLayer]'。有什麼事情發生? – DAS 2011-12-26 16:47:21

+0

你是對的當我做[self.view.layer addSublayer:shapeLayer]什麼都沒有發生,所以我該如何解決這個問題? – 2011-12-28 11:08:19

0

這可能有幾個原因,例如:

  • 您是否#import <QuartzCore/QuartzCore.h>(和/或CoreGraphics/CoreGraphics.h>取決於喲你在代碼的其餘部分)?

  • 你可能已經設置了錯誤的CGRectMake初始化CALayer這是不是你看得見框內時(像CGRectMake(5000,5000,...,...))或size屬性之一是0

0

嘗試設置層框架: 遵循三個步驟

CALayer layerToBeAdded = [[CALayer alloc] init]; 
[layerToBeAdded setFrame:imgView.frame]; 
[imgView.layer addSublayer:layerToBeAdded]; 

不是分配的CALayer,你可以使用[imgView layer]

,並添加圖像層做到像這

layerToBeAdded.contents = (id)imgXYZ.CGImage; 
0

這裏是一個解決方案:

CALayer *pulseLayer_ = [[CALayer layer] retain]; 
pulseLayer_.backgroundColor = [[UIColor whiteColor] CGColor]; 
pulseLayer_.bounds = CGRectMake(0., 0., 80., 80.); 
pulseLayer_.cornerRadius = 12.; 
pulseLayer_.position = self.view.center; 
[self.view.layer addSublayer:pulseLayer_]; 
CALayer *imageLayer = [CALayer layer]; 
imageLayer.frame = pulseLayer_.bounds; 
imageLayer.cornerRadius = 10.0; 
imageLayer.contents = (id) [UIImage imageNamed:@"jacklogo.png"].CGImage; 
imageLayer.masksToBounds = YES; 
[pulseLayer_ addSublayer:imageLayer]; 
[pulseLayer_ setNeedsDisplay]; 
0

我通過使用下面UIViewUIImageView和層設置爲UIView解決類似的問題。當您在索引0處將圖層添加到UIImageView時,圖像將不可見。

我有一個UIViewphotoView。它有一個類UIImageView的子視圖,它具有相同的邊界並且具有明確背景顏色。我添加gradientLayerphotoView

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // Adding gradient background to UIImageView 
    CAGradientLayer *gradientLayer = [CAGradientLayer layer]; 
    gradientLayer.frame = self.photoImageView.bounds; 
    gradientLayer.colors = @[(id)[UIColor customUltraLightGrayColor].CGColor, (id)[UIColor customUltraLightGrayColor].CGColor, (id)[UIColor customDarkGrayColor].CGColor]; 
    gradientLayer.locations = @[@(0.0), @(0.6)]; 
    [self.photoView.layer insertSublayer:gradientLayer atIndex:0]; 
} 

結果我得到這個:

Gradient background of UIImageView