在保留中心的同时自动调整图像

时间:2013-08-25 23:47:46

标签: iphone ios ipad

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

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

1 个答案:

答案 0 :(得分:0)

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

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

现在您需要从代码中设置每个图像的图像源。在viewDidLoad方法中,使用此post中的解决方案或使用以下代码段将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完成。

希望这会有所帮助:)