我的 Nib 文件中有一个 UIImageView 可以拉伸屏幕的宽度。我想做的是在完成自动调整大小(使用设备旋转)时让图像的中间三分之一保持相同的高度和宽度,并且只拉伸图像的三分之一和三分之三。
任何想法如何做到这一点?
据我所知,没有直接的方法可以做到这一点。这是一种方法:
代替一个 ImageView,创建 3 个宽度和高度相等的 UIImageView(原始图像的 1/3)。上下 ImageView 将分别粘在顶部和底部边缘,中间的 ImageView 将具有灵活的底部和顶部边距。您需要将中间 ImageView 的 contentMode 属性设置为UIViewContentModeScaleAspectFit
(或UIViewContentModeCenter
根据您想要处理旋转的方式),将其他属性设置为UIViewContentModeScaleToFill
. 您可以从 IB 设置所有这些属性。
现在您需要从代码中设置每个图像的来源。在该方法中,使用本文中的解决方案或使用以下代码片段viewDidLoad
将 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 完成。
希望这可以帮助 :)