web-dev-qa-db-ja.com

UIImageViewに合わせて画像のサイズを変更する

私はObjective Cを初めて使用し、ベアリングを手に入れました。私は本当に簡単なことをしたいのですが、それはかなりの挑戦であることがわかります:

UIImageViewに画像を表示しようとしています。私が表示している画像は大きく、UIImageViewに合うように縮小したいです。 AspectFit表示モードを設定しようとしましたが、画像は元のサイズで表示され、UIImageViewでクリップされます。私のコードは次のとおりです。

- (void)changeImages
{
    UIImage* img11 = nil;

    img11 = [UIImage imageWithContentsOfFile: [[NSBundle mainBundle] pathForResource:@"dog" ofType:@"jpeg"]];

    u11.contentMode = UIViewContentModeScaleAspectFit;
    u11.image = img11;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    [self changeImages];
}

誰かがこれに光を当てることができますか?

ありがとう!

23
cristi71000

こんにちは私はこれを試してみます...

- (void)changeImages
{
    UIImage *img11 = [UIImage imageNamed@"dog.jpeg"];

    u11.contentMode = UIViewContentModeScaleAspectFit;
    u11.clipsToBounds = YES;
    [u11 setImage:img11];
}

- (void)viewWillAppear:animated
{
    [super viewWillAppear:animated];

    [self changeImages];
}

これにより、imageView内に収まるように画像が拡大または縮小されます。 clipsToBoundsは必須ではありませんが、imageViewのフレームの外側に画像が表示されるのを停止します。

HTH。

31
Fogmeister

UIViewController.mに追加します。

-(UIImage *)resizeImage:(UIImage *)image imageSize:(CGSize)size
{
    UIGraphicsBeginImageContext(size);
    [image drawInRect:CGRectMake(0,0,size.width,size.height)];
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
    // here is the scaled image which has been changed to the size specified
    UIGraphicsEndImageContext();
    return newImage;
}

を使用して:

UIImage *image = [UIImage imageNamed:@"image.png"];
CGSize size = CGSizeMake(50, 63); // set the width and height 
UIImage *resizedImage = [self resizeImage:image imageSize:size];

役に立てば幸いです。

17
Erhan Demirci
CGSize size=CGSizeMake(79, 84);//set the width and height
UIGraphicsBeginImageContext(size);
[image drawInRect:CGRectMake(0,0,size.width,size.height)];
UIImage * newImage = UIGraphicsGetImageFromCurrentImageContext();
//here is the scaled image which has been changed to the size specified
UIGraphicsEndImageContext();

これは確実に機能し、QuartzCore FrameWorkをインポートすることを忘れないでください。

ハッピーコーディングをしてください(^ _ ^)....

4
Abhilash Reddy

Interface BuilderのAttributes InspectorでView:ModeをAspect Fitに設定することもできます

1
Tad

私は次のことを行いましたが、モードをデフォルト値「Scale to fill」から「aspect fill」に変更するのに役立ちました

次のようにコード行を追加します(セル構成で行いました)。

cell.photo.clipsToBounds = true
0
Gulz