我的Nib文件中有一個UIImageView,用於延伸屏幕的寬度。我想要做的是在完成自動設置時(設備旋轉),圖像的中間三分之一保持相同的高度和寬度,並且僅延伸圖像的第一和第三分之三。在保存中心時自動調整圖像
任何想法如何做到這一點?
我的Nib文件中有一個UIImageView,用於延伸屏幕的寬度。我想要做的是在完成自動設置時(設備旋轉),圖像的中間三分之一保持相同的高度和寬度,並且僅延伸圖像的第一和第三分之三。在保存中心時自動調整圖像
任何想法如何做到這一點?
就我所知,沒有直接的方法來做到這一點。這裏有一種方法:
取代一個ImageView,創建3個寬度和高度相同(原始圖像的1/3)的UIImageView。上下ImageView將分別粘貼到上邊緣和下邊緣,中間ImageView將具有靈活的底部和頂部邊距。您需要將中間ImageView的contentMode屬性設置爲UIViewContentModeScaleAspectFit
(或UIViewContentModeCenter
,取決於您想要如何處理旋轉),將其他設置爲UIViewContentModeScaleToFill
。您可以從IB設置所有這些屬性。
現在您需要從代碼中設置每個圖片的來源。在viewDidLoad
方法切片的UIImage成3個部分使用的解決方案,從這個post或使用下面的代碼片段:
-(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完成。
希望這會有所幫助:)