我的Nib文件中有一个UIImageView,可以拉伸屏幕的宽度。我想做的是在完成自动调整(使用设备旋转)时图像的中间三分之一保持相同的高度和宽度,并且仅拉伸图像的第一和第三三分之一。
任何想法如何做到这一点?
答案 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完成。
希望这会有所帮助:)