2013-08-25 34 views
1

我的Nib文件中有一個UIImageView,用於延伸屏幕的寬度。我想要做的是在完成自動設置時(設備旋轉),圖像的中間三分之一保持相同的高度和寬度,並且僅延伸圖像的第一和第三分之三。在保存中心時自動調整圖像

任何想法如何做到這一點?

回答

0

就我所知,沒有直接的方法來做到這一點。這裏有一種方法:

取代一個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完成。

希望這會有所幫助:)

相關問題