【问题标题】:adjusting the width of UIImageView proportionally when changing height改变高度时按比例调整 UIImageView 的宽度
【发布时间】:2012-01-13 07:12:14
【问题描述】:

我有以下代码:

UIImageView * imgView = [[UIImageView alloc] initWithImage:image];

NSLog(@"IMAGE SIZE WIDTH IS %f AND HEIGHT IS %f", imgView.frame.size.width, imgView.frame.size.height);

[imgView setUserInteractionEnabled:YES];
[imgView setContentMode:UIViewContentModeScaleAspectFit];

CGRect frame = imgView.frame;
frame.size.width = SCREEN_WIDTH_PORTRAIT;
[imgView setFrame: frame];

但是这个view的高度并没有相应的变化,是怎么回事?

【问题讨论】:

    标签: iphone objective-c ios ipad uiimageview


    【解决方案1】:

    您是在告诉视图的内容进行缩放,而不是视图本身。您必须同时设置宽度和高度才能做到这一点。

    但是,如果您只是想通过方向更改进行缩放,则可以使用 UIViewAutoresizingMask 并将其设置为:

    imgView.autoresizingMask = UIViewAutoresizingFlexibleWidth| UIViewAutoresizingFlexibleHeight;
    

    这将使它在自动切换方向时伸展。

    编辑: 以下是您如何更改高度并保持比例,并为新帧设置动画:

    CGRect frame = imgView.frame;
    float ratio = frame.size.width/SCREEN_WIDTH_PORTRAIT;
    frame.size.width = SCREEN_WIDTH_PORTRAIT;
    frame.size.height *= ratio;
    [UIView animateWithDuration:.25 animations:^{
        [imgView setFrame: frame];              
    }];
    

    【讨论】:

    • 嗯...所以没有办法将视图更改为自行缩放?
    • 显式设置 UIView 的宽度不会影响它的高度,不会。也许如果您显示使用更多代码,我可以为您提供比我提供的更好的解决方案。
    • 我只是想为 UIImageView 设置动画,使其宽度更大..但按比例增长..仅此而已
    【解决方案2】:

    图像将适合框架,其高度与您仅更改宽度相同。因此,根据图像的纵横比,图像可能不会改变它的大小。您可以确定 UIImage 的纵横比,然后根据新宽度计算高度。

    【讨论】:

      猜你喜欢
      • 2010-11-02
      • 1970-01-01
      • 1970-01-01
      • 2021-10-25
      • 2012-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多