【发布时间】:2013-12-06 16:57:38
【问题描述】:
给定一个 UIImage,我想把它变成一个正方形。只需切掉一些最大的尺寸,使其纵横比为 1:1。
UIImage *pic = [UIImage imageNamed:@"pic"];
CGFloat originalWidth = pic.size.width;
CGFloat originalHeight = pic.size.height;
float smallestDimension = fminf(originalWidth, originalHeight);
CGRect square = CGRectMake(0, 0, smallestDimension, smallestDimension);
CGImageRef imageRef = CGImageCreateWithImageInRect([pic CGImage], square);
UIImage *squareImage = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
UIImageView *imageView = [[UIImageView alloc] initWithImage:squareImage];
imageView.frame = CGRectMake(100, 100, imageView.bounds.size.width, imageView.bounds.size.height);
[self.view addSubview:imageView];
但这就是它的结果:
什么时候应该看起来像这样,但稍微窄一点。
这是为什么?图片是pic(150x114) / pic@2x(300x228)。
【问题讨论】:
-
这似乎有问题
imageView.frame = CGRectMake(100, 100, imageView.bounds.size.width, imageView.bounds.size.height);将其更改为可能imageView.frame = CGRectMake(100, 100, 100, 100);(不确定)
标签: ios objective-c uiimageview uiimage cgimage