簡體   English   中英

旋轉時在UIView上保持CALayer的大小/位置

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM