2011-11-01 95 views
0

时,我有以下属性的UIImage的:保持的CALayer的大小/位置上的UIView旋转

imageView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; 
imageView.contentMode = UIViewContentModeScaleAspectFit; 

后来我在指定位置添加自定义CALayer到ImageView的。

当我旋转我的imageview图像缩放到适合(给定contentMode),但现在我的CALayer定位错误。显然只有Y位置是错误的。如何在视图旋转时使我的CALayer正确地重新定位?

回答

0

据我所知,为了位置/布局定制层,你应该继承您的ImageView和实施此方法:

- (void) layoutSublayersOfLayer:(CALayer*)layer 
{ 
    [super layoutSublayersOfLayer:layer]; 

    self.customlayer.position = CGPointMake(
      self.bounds.size.width/2, self.bounds.size.height/2); 
} 

如果你不想继承ImageView的,你可以试试这条路。 此代码应该位于您的imageview控制器中:

- (void) viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.container = [CALayer layer]; 
    self.container.bounds = self.imageview.bounds; 
    self.container.delegate = self; 

    [self.container addSublayer:self.customlayer]; 
    [self.imageview.layer addSublayer:self.container]; 
} 

- (void) layoutSublayersOfLayer:(CALayer*)layer // this is layers delegate method 
{ 
    if (layer == self.container) 
    { 
     self.customlayer.position = CGPointMake(self.container.bounds.size.width/2, 
               self.container.bounds.size.height/2); 
    } 
}