Since the views will share the same backing store, I assume you want them to share the same image that results from the layer's custom drawing, right? I believe this can be done with something similar to:
// create your custom layer MyCustomLayer* layer = [[MyCustomLayer alloc] init]; // create the custom views UIView* view1 = [[UIView alloc] initWithFrame:CGRectMake( 0, 0, layer.frame.size.width, layer.frame.size.height)]; UIView* view2 = [[UIView alloc] initWithFrame:CGRectMake( 100, 100, layer.frame.size.width, layer.frame.size.height)]; // have the layer render itself into an image context UIGraphicsBeginImageContext( layer.frame.size ); CGContextRef context = UIGraphicsGetCurrentContext(); [layer drawInContext:context]; UIImage* image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); // set the backing stores (a.k.a the 'contents' property) of the view layers to the resulting image view1.layer.contents = (id)image.CGImage; view2.layer.contents = (id)image.CGImage; // assuming we're in a view controller, all those views to the hierarchy [self.view addSubview:view1]; [self.view addSubview:view2];