在UIImageView中仅显示原始图像的一部分

时间:2012-11-27 05:53:52

标签: objective-c ios uiimageview

如何在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];

Original Image Current outPut need

4 个答案:

答案 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;

}

然后你设置该图像的中心并在图像视图中添加我希望这是工作