it-swarm.com.ru

UIImageView режим содержимого

enter image description here

Синяя линия - это границы изображения .UIImageView 'contentMode is UIViewContentModeScaleAspectFit, И я хочу сохранить масштаб исходного изображения . Как сделать изображение левым? Edge находится на левом краю UIImageView? Но не в режиме UIViewContentModeTopLeft. Держите шкалу и не оставляйте пробелов слева . Мой английский не очень хороший, надеюсь, вы, ребята, поняли, что я говорю .. Большое спасибо.

9
jxdwinter
 yourimageView.contentMode = UIViewContentModeCenter;
if ( yourimageView.bounds.size.width > yourimageView.size.width && yourimageView.bounds.size.height > yourimageView.size.height) {
   yourimageView.contentMode = UIViewContentModeScaleAspectFit;
}

Swift3

yourimageView.contentMode = .center
if yourimageView.bounds.size.width > yourimageView.size.width && yourimageView.bounds.size.height > yourimageView.size.height {
yourimageView.contentMode = .scaleAspectFit
}

вы можете изменить свой режим как

typedef NS_ENUM(NSInteger, UIViewContentMode) {
UIViewContentModeScaleToFill,
UIViewContentModeScaleAspectFit,      // contents scaled to fit with fixed aspect. remainder is transparent
UIViewContentModeScaleAspectFill,     // contents scaled to fill with fixed aspect. some portion of content may be clipped.
UIViewContentModeRedraw,              // redraw on bounds change (calls -setNeedsDisplay)
UIViewContentModeCenter,              // contents remain same size. positioned adjusted.
UIViewContentModeTop,
UIViewContentModeBottom,
UIViewContentModeLeft,
UIViewContentModeRight,
UIViewContentModeTopLeft,
UIViewContentModeTopRight,
UIViewContentModeBottomLeft,
UIViewContentModeBottomRight,
};
6
Anbu.Karthik

именно так

imageView.contentMode = UIViewContentModeCenter;
if (imageView.bounds.size.width > imageView.size.width && imageView.bounds.size.height > imageView.size.height) {
   imageView.contentMode = UIViewContentModeScaleAspectFit;
}
0
yuhanle

в тот момент, когда я увидел вашу ситуацию, я подумал об этом:

_imageView.contentMode = UIViewContentModeLeft | UIViewContentModeScaleAspectFit;

и я попробовал, но это еще хуже

так что я думаю, что вы можете изменить размер изображения, чтобы соответствовать размеру, который вы хотите с этим кодом

/// resize image to fit in show area without changing image ratio
+ (CGSize)resizeImageViewFromImageSize:(CGSize)imageSize toFitShowSize:(CGSize)showSize {
CGFloat ratioW = imageSize.width / showSize.width;
CGFloat ratioH = imageSize.height / showSize.height;

CGFloat ratio = imageSize.width / imageSize.height;

if (ratioW > 1 && ratioH > 1) { 

    if (ratioW > ratioH) { 
        imageSize.width = showSize.width;
        imageSize.height = imageSize.width / ratio;
    } else {
        imageSize.height = showSize.height;
        imageSize.width = imageSize.height * ratio;
    }

} else if (ratioW > 1) {

    imageSize.width = showSize.width;
    imageSize.height = imageSize.width / ratio;

} else if (ratioH > 1) {

    imageSize.height = showSize.height;
    imageSize.width = imageSize.height * ratio;

} else {

    if (ratioW > ratioH) { 

        if (showSize.width / imageSize.width <= 2) {   
            imageSize.width = showSize.width;
            imageSize.height = imageSize.width / ratio;
        }

    } else {

        if (showSize.height / imageSize.height <= 2) {
            imageSize.height = showSize.height;
            imageSize.width = imageSize.height * ratio;
        }

    }

}

return imageSize;
}

затем поместите ваш imageView выровнять по левому краю экрана

0
wossoneri

Стриж

import UIKit
import AVFoundation



let originalsize = CGSizeMake(500, 500)
let rect = CGRectMake(0, 0, 320, 480)


var result = AVMakeRectWithAspectRatioInsideRect(originalsize, rect)

print(result)
0
Abo3atef