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.