J'ai cherché un peu partout et il semble que les gens disent qu'il est possible de rendre à nouveau les données après avoir effectué un zoom avant, maintenant que vous connaissez le facteur d'échelle de UIScrollView. J'ai également vu des articles sur la transformation de votre couche en CATiledLayer et sur la définition des levelsOfDetailBias et levelsOfDetail.
J'ai un UIScrollView, et dans celui-ci, un ResultsView qui est une sous-classe de UIView :
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
CATiledLayer *tiledLayer = (CATiledLayer *)self.layer;
tiledLayer.levelsOfDetailBias = 3;
tiledLayer.levelsOfDetail = 3;
self.opaque = YES;
}
return self;
}
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
// Drawing code
}
*/
+ (Class)layerClass {
return [CATiledLayer class];
}
Dans ma classe où j'ai le UIScrollView et le ResultsView, je le fais :
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return self.ResultsView;
}
Cela suffit-il pour que le texte soit rendu à nouveau (net) ? Ou dois-je implémenter quelque chose dans
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx {
}
Si c'est le cas, je ne sais pas comment faire. Dans ma classe avec UIScrollView et ResultsView, dans ResultsView (dans le XIB), j'ai juste quelques UILabels et UIViews (UIViews utilisés pour les en-têtes/pieds de page de la vue). Je ne sais donc pas comment les redessiner à partir de ResultsView. Bien que ResultsView ait les UILabels et les UIViews comme enfants dans le XIB, je ne suis pas sûr de la façon dont je pourrais les redessiner à partir de la classe ResultsView, ni de ce que je devrais faire de toute façon.
Ou est-ce la mauvaise approche ? Dois-je simplement redimensionner les UILabel et UIView en fonction du facteur d'échelle dans la méthode du délégué scrollViewDidEndZooming: ? TIA