Как обрезать центральный квадрат в UIImage?

Извините за этот вопрос, но я просмотрел много тем здесь, в S.O. и я ничего не нашел.

Вопрос: как обрезать центральный квадрат в UIImage?

Я попробовал код ниже, но безуспешно. Обрезка происходит, но в верхнем левом углу.

-(UIImage*)imageCrop:(UIImage*)original
{
    UIImage *ret = nil;

    // This calculates the crop area.

    float originalWidth  = original.size.width;
    float originalHeight = original.size.height;

    float edge = fminf(originalWidth, originalHeight);

    float posX = (originalWidth   - edge) / 2.0f;
    float posY = (originalHeight  - edge) / 2.0f;


    CGRect cropSquare = CGRectMake(posX, posY,
                                   edge, edge);


    // This performs the image cropping.

    CGImageRef imageRef = CGImageCreateWithImageInRect([original CGImage], cropSquare);

    ret = [UIImage imageWithCGImage:imageRef
                              scale:original.scale
                        orientation:original.imageOrientation];

    CGImageRelease(imageRef);

    return ret;
}
14
задан Danilo Gomes 14 June 2012 в 18:28
поделиться