J'ai un UIImageView et l'objectif est de le réduire proportionnellement en lui donnant soit une hauteur soit une largeur.
UIImage *image = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://farm4.static.flickr.com/3092/2915896504_a88b69c9de.jpg"]]];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
//Add image view
[self.view addSubview:imageView];
//set contentMode to scale aspect to fit
imageView.contentMode = UIViewContentModeScaleAspectFit;
//change width of frame
CGRect frame = imageView.frame;
frame.size.width = 100;
imageView.frame = frame;
L'image a été redimensionnée mais la position n'est pas en haut à gauche. Quelle est la meilleure approche pour mettre à l'échelle l'image / imageView et comment puis-je corriger la position?
objective-c
cocoa-touch
Ronnie Liew
la source
la source
Réponses:
Fixé facilement, une fois que j'ai trouvé la documentation!
la source
ScaleAspectFit
est maintenant unenum UIViewContentMode
, vous devez donc définirimageView.contentMode = UIViewContentMode.ScaleAspectFit
. Notez la période.translatesAutoresizingMaskIntoConstraints
ne doit pas être défini surfalse
. Cela m'a pris beaucoup de temps avant de réaliser que cette propriété empêche le redimensionnementJ'ai vu un peu de conversation sur les types d'échelle, j'ai donc décidé de rédiger un article concernant certains des types d'échelle de mode de contenu les plus populaires .
L'image associée est ici:
la source
Je viens d'essayer cela et UIImage ne prend pas en charge _imageScaledToSize.
J'ai fini par ajouter une méthode à UIImage en utilisant une catégorie - une suggestion que j'ai trouvée sur les forums Apple Dev.
Dans un .h à l'échelle du projet -
La mise en oeuvre:
la source
UIGraphicsBeginImageContext(targetSize);
faire si([UIScreen instancesRespondToSelector:@selector(scale)]) { UIGraphicsBeginImageContextWithOptions(targetSize, NO, 0.0f); } else { UIGraphicsBeginImageContext(targetSize); }
pour soutenir les écrans rétiniens sans les rendre flousla source
Vous pouvez essayer de faire correspondre la
imageView
taille auimage
. Le code suivant n'est pas testé.la source
on peut redimensionner un UIImage de cette façon
la source
Le code original affiché en haut a bien fonctionné pour moi dans iOS 4.2.
J'ai trouvé que la création d'un CGRect et la spécification de toutes les valeurs du haut, de la gauche, de la largeur et de la hauteur étaient le moyen le plus simple d'ajuster la position dans mon cas, qui utilisait une UIImageView à l'intérieur d'une cellule de tableau. (Encore besoin d'ajouter du code pour libérer des objets)
la source
Configurez votre ImageView en sélectionnant Mode sur
Aspect Fill
et cochez laClip Subviews
case.la source
Cela fonctionne bien pour moi Swift 2.x:
la source
Définissez votre
UIimageview
échelle .........la source
Pour Swift:
la source
UIImageView + Scale.h:
UIImageView + Scale.m:
la source
J'ai utilisé le code suivant. Où imageCoverView est UIView contient UIImageView
la source
Si les solutions proposées ici ne fonctionnent pas pour vous et que votre élément d'image est en fait un PDF, notez que XCode traite en fait les PDF différemment des fichiers d'image. En particulier, il ne semble pas capable de s'adapter pour se remplir correctement avec un PDF: il finit par être carrelé à la place. Cela m'a rendu fou jusqu'à ce que je comprenne que le problème était le format PDF. Convertissez-vous en JPG et vous devriez être prêt à partir.
la source
Habituellement, j'utilise cette méthode pour mes applications ( compatible Swift 2.x ):
la source
Je pense que vous pouvez faire quelque chose comme
la source
Voici comment vous pouvez l'adapter facilement.
Cela fonctionne en 2.x avec le simulateur et l'iPhone.
la source