CALayers didn't get resized on its UIView's bounds change. Why? CALayers didn't get resized on its UIView's bounds change. Why? ios ios

CALayers didn't get resized on its UIView's bounds change. Why?


I used the same approach that Solin used, but there's a typo in that code. The method should be:

- (void)layoutSubviews {  [super layoutSubviews];  // resize your layers based on the view's new bounds  mylayer.frame = self.bounds;}

For my purposes, I always wanted the sublayer to be the full size of the parent view. Put that method in your view class.


Since CALayer on the iPhone does not support layout managers, I think you have to make your view's main layer a custom CALayer subclass in which you override layoutSublayers to set the frames of all sublayers. You must also override your view's +layerClass method to return the class of your new CALayer subclass.


I used this in the UIView.

-(void)layoutSublayersOfLayer:(CALayer *)layer{    if (layer == self.layer)    {        _anySubLayer.frame = layer.bounds;    }super.layoutSublayersOfLayer(layer)}

Works for me.