0

画像のサイズを変更するためのカテゴリを提供するチュートリアルに従おうとしています。しかし、コードは次の行でクラッシュしています。

CGSize mainImageSize = self.size;

ブレークポイントのデバッガーは次のように述べています。

size    CGSize  (width=142, height=142) 
mainImageSize   CGSize  (width=2.121995791459338E-314, height=2.121995791459338E-314)

率直に言って、私は上記のことをどうすればよいかわかりません:

カテゴリのソース ファイルは次のとおりです。

-(UIImage *) createThumbnailToFillSize:(CGSize)size
{
    CGSize mainImageSize = self.size;//LINE WHERE IT CRASHES

    UIImage *thumb;

    CGFloat widthScaler = size.width / mainImageSize.width;
    CGFloat heightScaler = size.height / mainImageSize.height;

    CGSize repositionedMainImageSize = mainImageSize;

    CGFloat scaleFactor;
    // Determine if we should shrink based on width or hight
    if(widthScaler > heightScaler)
    {
        // calculate based on width scaler
        scaleFactor = widthScaler;
        repositionedMainImageSize.height = ceil(size.height / scaleFactor);
    }
    else {
        // calculate based on height scaler
        scaleFactor = heightScaler;
        repositionedMainImageSize.width = ceil(size.width / heightScaler);
    }

    UIGraphicsBeginImageContext(size);

    CGFloat xInc = ((repositionedMainImageSize.width-mainImageSize.width) / 2.f) *scaleFactor;
    CGFloat yInc = ((repositionedMainImageSize.height-mainImageSize.height) / 2.f) *scaleFactor;

    [self drawInRect:CGRectMake(xInc, yInc, mainImageSize.width * scaleFactor, mainImageSize.height * scaleFactor)];
    thumb = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return thumb;
}

そして、これがそれがどのように呼ばれているかです。

 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

        UIImage *chosenImage = info[UIImagePickerControllerEditedImage];
        //thumbnail stuff
        CGFloat side = 71.f;//was 71 in Kuh book
        side *=[[UIScreen mainScreen] scale];
        UIImage *thumbnail = [chosenImage createThumbnailToFillSize:CGSizeMake(side, side)];
        self.imageView.image = thumbnail;

クラッシュの原因についての提案をいただければ幸いです。

4

0 に答える 0