如何根据图片大小动态设置imageView的大小

Posted

技术标签:

【中文标题】如何根据图片大小动态设置imageView的大小【英文标题】:How can I dynamically set the size of the imageView according to the size of the image 【发布时间】:2012-05-17 10:13:06 【问题描述】:

我使用 Interface Builder 来布局我的视图和图像视图。我在视图上放了一个 imageView 并将其设置为插座。问题是无论我在程序中设置什么尺寸的图片(768*1024、1024*700):

 self.imageView.image = [UIImage imageNamed:self.filename];

要在屏幕上显示的大小始终是我在 Interface Builder 中设置的 imageView 的大小。?谢谢!

【问题讨论】:

【参考方案1】:

类似:

UIImageView *imageView = [[UIImageView alloc] init];

UIImage *image = [UIImage imageNamed:@"image.png"];
CGSize imageSize = [image size];

imageView.frame = CGRectMake(0, 0, imageSize.width, imageSize.height);

【讨论】:

【参考方案2】:
UIImage *image = [UIImage imageNamed:self.filename];
CGFloat width = image.size.width;
CGFloat height = image.size.height;
self.imageView.frame = CGRectMake(x, y , width, height);

【讨论】:

【参考方案3】:

您可以对图像进行子类化,并在每次设置新图像时执行以下覆盖:

@interface MyImageSubClass : UIImageView;
@end

@implementation MyImageSubClass

- (void)setImage:(UIImage *)image 
    // Let the original UIImageView parent class do its job
    [super image];

    // Now set the frame according to the image size
    // and keeping the original position of your image frame
    if (image) 
        CGRect r = self.frame;
        CGSize imageSize = [image size];
        self.frame = (r.origin.x, r.origin.y, imageSize.width, imageSize.height);
    


@end

【讨论】:

【参考方案4】:
 UIImage *buttonImage2=[UIImage imageNamed:@"blank_button_blue.png"];
 oButton=[[UIButton alloc] init];
 //  [oButton setImage:buttonImage2 forState:UIControlStateNormal];
 [oButton setFrame:CGRectMake(0, 0, buttonImage2.size.width, buttonImage2.size.height)];

【讨论】:

【参考方案5】:
UIImage* sourceImage = [UIImage imageNamed:self.filename];;

 CGRect rect;
rect.size.width = CGImageGetWidth(sourceImage.CGImage);
 rect.size.height = CGImageGetHeight(sourceImage.CGImage);

[ yourimageview setframe:rect];

【讨论】:

以上是关于如何根据图片大小动态设置imageView的大小的主要内容,如果未能解决你的问题,请参考以下文章

请教大家:使用sdwebimage下载图片完成后更新cell中的imageview如何动态更改行高

设置image的大小

如何动态的设定imageview的大小

如何动态更改 ImageView 高度

android ImageView图片缩放至屏幕大小

android中imageview里的图片大小是不是可以比imageview本身大,如果可以,如何设置?