Ser*_*yov 21 iphone cocoa-touch objective-c uiimageview ios
我有这个UIImageView,我有它的最大高度和最大宽度的值.我想要实现的是我想拍摄图像(具有任何宽高比和任何分辨率)并且我希望它适合边框,因此图片不会超过它们,但它可以根据需要缩小它们.(图中标记为红色):

现在图像正确地适合所需的大小,但我有两个担忧:1.UIImageView不等于调整大小的图像的大小,因此留下红色背景(我不想要那样)2.如果图像小于我的高度UIImageView没有调整到更小,它保持相同的高度.
这是我的代码,我知道它的错误:
UIImage *actualImage = [attachmentsArray lastObject];
UIImageView *attachmentImageNew = [[UIImageView alloc] initWithFrame:CGRectMake(5.5, 6.5, 245, 134)];
attachmentImageNew.image = actualImage;
attachmentImageNew.backgroundColor = [UIColor redColor];
attachmentImageNew.contentMode = UIViewContentModeScaleAspectFit;
Run Code Online (Sandbox Code Playgroud)
那么,如何动态改变大小不仅的UIImageView.image,但整体的UIImageView,从而使得它的尺寸完全可调的内容.任何帮助将不胜感激,谢谢!
Mik*_*ail 33
当您获得已调整大小的图像的宽度和高度在UIViewContentModeScaleAspectFit之后获取已调整大小的图像的宽度时,您可以调整imageView的大小:
imageView.frame = CGRectMake(0, 0, resizedWidth, resizedHeight);
imageView.center = imageView.superview.center;
Run Code Online (Sandbox Code Playgroud)
我没有检查它是否有效,但我认为一切都应该没问题
Raj*_*071 23
- (UIImage *)image:(UIImage*)originalImage scaledToSize:(CGSize)size
{
//avoid redundant drawing
if (CGSizeEqualToSize(originalImage.size, size))
{
return originalImage;
}
//create drawing context
UIGraphicsBeginImageContextWithOptions(size, NO, 0.0f);
//draw
[originalImage drawInRect:CGRectMake(0.0f, 0.0f, size.width, size.height)];
//capture resultant image
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
//return image
return image;
}
Run Code Online (Sandbox Code Playgroud)
这是使用扩展的Rajneesh071答案的Swift等价物
UIImage {
func scaleToSize(aSize :CGSize) -> UIImage {
if (CGSizeEqualToSize(self.size, aSize)) {
return self
}
UIGraphicsBeginImageContextWithOptions(aSize, false, 0.0)
self.drawInRect(CGRectMake(0.0, 0.0, aSize.width, aSize.height))
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
let image = UIImage(named: "Icon")
item.icon = image?.scaleToSize(CGSize(width: 30.0, height: 30.0))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
94000 次 |
| 最近记录: |