如何在UIImageView中仅显示原始图像的一部分
这个问题可能非常熟悉和陈旧,但再问一次的原因是,在这些答案的帮助下我找不到一个可行的想法 很多人说set image.contentMode = UIViewContentModeCenter; (但没有工作)
我几乎需要一个包含原始图像中心的矩形,我该怎么做?
当我向我的应用程序显示静态图像并将UIImageVie的内容模式设置为Aspect Fill时,我确实能够正常工作。 但是,当我从url显示图像并使用NSData 时,这是不可行的
添加我的代码和图片
NSString *weburl = @"http://topnews.in/files/Sachin-Tendulkar_15.jpg";
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 50, 108, 86)];
NSURL *url = [NSURL URLWithString:weburl];
NSData *data = [NSData dataWithContentsOfURL:url];
imageView.image = [UIImage imageWithData:data];
[self.view addSubview:imageView];
答案 0 :(得分:8)
如果您添加了UIImageView表单XIB,您可以在那里找到“mode”属性,然后您可以从那里查看和设置不同的模式(来自Interface builder)。或者通过编程,您可以通过
设置不同的模式imageView.contentMode = UIViewContentModeCenter;
imageView.clipsToBounds = YES;
答案 1 :(得分:4)
对于这种输出,您需要根据您的要求裁剪图像。
如下所示裁剪可以使用的代码。
-(UIImage *) CropImageFromTop:(UIImage *)image
{
CGImageRef imageRef = CGImageCreateWithImageInRect([image CGImage], CGRectMake(0, 12, image.size.width, image.size.height - 12));
UIImage *cropimage = [[[UIImage alloc] initWithCGImage:imageRef] autorelease];
CGImageRelease(imageRef);
return cropimage;
}
答案 2 :(得分:4)
试试这个:
self.imageView.layer.contentsRect = CGRectMake(0.25, 0.25, 0.5, 0.5);
self.imageView将显示图像的中间部分。您可以自己计算CGRect所需的值
答案 3 :(得分:0)
您尝试缩放图像,然后在UiImageView中添加图像并将图像设置为中心,然后将其置于中心。比例图像代码是
-(UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize{
UIGraphicsBeginImageContext(newSize);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
然后你设置该图像的中心并在图像视图中添加我希望这是工作