2011-04-19 53 views
0

代碼後iPhone應用程序:UIImage的居中調整

+(UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize { 
    UIGraphicsBeginImageContext(newSize); 
    [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; 
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();  
    UIGraphicsEndImageContext(); 
    return newImage; 
} 

CGSize sz = CGSizeMake(200, 20); 
imageView.contentMode = UIViewContentModeScaleAspectFit; 
imageView.image = [Class imageWithImage: [UIImage imageNamed:@"image.png"] scaledToSize: sz]; 

調整大小後的圖像中的ImageView居中,我想它被左對齊(優選左上角)。我怎樣才能做到這一點?謝謝你的幫助。

回答

1

更改contentMode到:

imageView.contentMode = UIViewContentModeTopLeft; 
+0

但是然後圖像不會AspectFit你的圖像視圖....我不認爲你可以通過設置contentMode從左上角開始的圖像AspectFit。 – lukya 2011-04-19 07:00:16

+0

我認爲你不能使用兩種內容模式,只有一種是允許使用UIViewContentModeTopLeft或UIViewContentModeScaleAspectFit。 – 2011-04-19 07:09:46

+0

完美,謝謝。 – Ahab 2011-04-19 07:40:55

5

如果您設置您的ImageView有內容模式UIViewContentModeScaleAspectFit,iOS版將適合你的形象,但它也將引入透明杆向左和向右如果配合小於你的寬度。

解決方法是讓iOS適合圖像,然後找出新的寬度並用新的寬度設置imageView的寬度。

CGSize imgSize = contentProvider.image.size; 
    CGRect frame = contentProviderViewOriginalFrame; 

    if (imgSize.width > 0 && imgSize.height > 0) 
    { 
     double aspectRatio = (imgSize.width * 1.0)/(imgSize.height * 1.0); 
     CGFloat newWidth = frame.size.height * aspectRatio; 

     if (newWidth < frame.size.width) 
     { 
      frame.size.width = newWidth; 
     } 
    }