[英]Keep size/position of CALayer on UIView when rotated
我有一個具有以下屬性的UIImage:
imageView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
imageView.contentMode = UIViewContentModeScaleAspectFit;
稍后,我在給定位置的imageview中添加自定義CALayer
。
當我旋轉imageview時,圖像會縮放以適合(根據contentMode設置),但是現在我的CALayer
位置錯誤。 顯然只有Y位置是錯誤的。 旋轉視圖時如何正確調整CALayer
位置?
據我所知,為了定位/布局自定義圖層,您應該將您的imageview子類化並實現此方法:
- (void) layoutSublayersOfLayer:(CALayer*)layer
{
[super layoutSublayersOfLayer:layer];
self.customlayer.position = CGPointMake(
self.bounds.size.width / 2, self.bounds.size.height / 2);
}
如果您不想繼承imageview,可以嘗試這種方式。 此代碼應在您的imageview-controller中:
- (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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.