Redimensionnement de UIImageView dans un UITableViewCell

Dans mon application, la taille UITableViewCell est dynamic, ce qui signifie que chacun a sa propre taille. à l'intérieur de chaque cellule il y a une image d'arrière-plan dans un UIImageView . Grâce au storyboard, j'ai utilisé les autolayouts pour personnaliser le UIImageView afin qu'il s'étire automatiquement lorsque la cellule est étirée. Le problème est que lorsqu'ils s'étendent, toute l'image s'étire avec les coins. Donc je cherchais en ligne et je suis venu en utilisant resizableImageWithCapInsets: afin d'étirer les côtés étirables et d'exclure les indésirables. J'ai donc essayé le code suivant dans tableView: cellForRowAtIndexPath: comme je voulais que l'image soit étirée verticalement seulement (hauteur):

 [cell.backgroundImage.image resizableImageWithCapInsets:UIEdgeInsetsMake(16, 0, 16, 0)]; 

cependant, le problème a persisté comme dans l'image ci-dessous

entrez la description de l'image ici

Comme vous pouvez le voir, les coins de l'image sont toujours étirés. Qu'est-ce que je fais mal? les valeurs edgeInset sont-elles erronées? ou devrais-je placer le code ailleurs?

Vous créez des valeurs UIEdgeInsets à l'aide de la fonction UIEdgeInsetsMake (). UIEdgeInsets encapsule quatre valeurs CGFloat différentes pour les valeurs d'incrustation de top, bottom, left, and right individuellement. Les valeurs d'incrustation positives réduisent la zone de contenu, tandis que les valeurs d'incrustation négatives l'augmentent efficacement. Assurez-vous de créer l'image en premier et d'y appliquer les incrustations puis, Une fois cela fait, appliquez l'image à backgroundView, plutôt que d'essayer de modifier les insertions de bord de la propriété backgroundView.image.

  UIImageView *cellBGIV = [[UIImageView alloc] initWithImage:[[UIImage imageNamed:@"imageName"] resizableImageWithCapInsets:UIEdgeInsetsMake(5.0, 5.0, 5.0, 5.0)]]; cell.backgroundView = cellBGIV;