【问题标题】:Autoresize image while preserving centre在保留中心的同时自动调整图像大小
【发布时间】:2013-08-25 23:47:45
【问题描述】:

我的 Nib 文件中有一个 UIImageView,它可以拉伸屏幕的宽度。我想做的是在完成自动调整大小(使用设备旋转)时让图像的中间三分之一保持相同的高度和宽度,并且只拉伸图像的三分之一和三分之三。

任何想法如何做到这一点?

【问题讨论】:

    标签: iphone ios ipad


    【解决方案1】:

    据我所知,没有直接的方法可以做到这一点。这是一种方法:

    创建 3 个宽度和高度相等(原始图像的 1/3)的 UIImageView,而不是一个 ImageView。上下 ImageView 将分别粘在顶部和底部边缘,中间的 ImageView 将具有灵活的底部和顶部边距。您需要将中间 ImageView 的 contentMode 属性设置为UIViewContentModeScaleAspectFit(或UIViewContentModeCenter,取决于您要如何处理旋转),其他设置为UIViewContentModeScaleToFill。您可以从 IB 设置所有这些属性。

    现在您需要从代码中设置每个图像的来源。在viewDidLoad 方法中,使用post 中的解决方案或使用以下代码sn-p 将UIImage 分成3 部分:

    -(NSMutableArray *)getImagesFromImage:(UIImage *)image withRow:(NSInteger)rows withColumn:(NSInteger)columns
    {
        NSMutableArray *images = [NSMutableArray array];
        CGSize imageSize = image.size;
        CGFloat xPos = 0.0, yPos = 0.0;
        CGFloat width = imageSize.width/rows;
        CGFloat height = imageSize.height/columns;
        for (int y = 0; y < columns; y++) {
            xPos = 0.0;
            for (int x = 0; x < rows; x++) {
    
                CGRect rect = CGRectMake(xPos, yPos, width, height);
                CGImageRef cImage = CGImageCreateWithImageInRect([image CGImage],  rect);
    
                UIImage *dImage = [[UIImage alloc] initWithCGImage:cImage];
                [images addObject:dImage];
                xPos += width;
            }
            yPos += height;
        }
        return images;
    }     
    

    您可能需要调整一些东西,但希望您能明白。

    如果您可以选择,您可以使用 photoshop/gimp 将图像预先拆分为 3 个部分,然后将它们放入捆绑包中。在这种情况下,您不需要在代码中进行图像分割,一切都可以在 IB 中完成。

    希望这会有所帮助:)

    【讨论】:

      猜你喜欢
      • 2011-04-01
      • 1970-01-01
      • 2013-08-20
      • 1970-01-01
      • 2017-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多