2015-06-20 154 views
0

在我的項目中,我有「更改徽標」選項。 enter image description here 點擊更改標誌前的灰色標誌,圖庫打開,用戶從中選擇一張照片。這是使用以下代碼完成的:調整imagView和左欄按鈕項目的圖像大小

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{ 
    UIImage *image = info[UIImagePickerControllerOriginalImage]; 
    [imagePicker dismissViewControllerAnimated:YES completion:nil]; 
    imgToBeSaved = image; 
    self.imgViewChooseLogo.contentMode = UIViewContentModeScaleAspectFit; 
    self.imgViewChooseLogo.image = image; 
    imageChanged = YES; 
} 

現在這張圖片保存在文檔目錄中。由於此圖像應作爲所有視圖控制器的標誌。所以我必須把它設置爲使用下面的代碼左側欄按鈕項目:

NSData *imageData = [NSData dataWithContentsOfFile:[AppDelegate documentDirectoryWithFilePath]]; 
UIImage *image = [UIImage imageWithData:imageData]; 
UIImage *new = [AppDelegate imageWithImage:image scaledToSize:CGSizeMake(150, 40)]; 
UIImage *new1 = [new imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithImage:new1 style:UIBarButtonItemStylePlain target:nil action:nil]; 
[self.navigationItem setLeftBarButtonItem:barButtonItem]; 

在其中方法scaledToSize竟把

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

我已經使用了150 * 40,使得我的默認標誌完全吻合。問題來了,當我不得不使用從畫廊選擇一些其他圖像。它延伸在酒吧按鈕項目上。我不知道如何設置選擇圖庫圖像的高度和寬度的比例,以便圖像不會在左側的條形圖項目上顯示。

+0

如果你不想舒展你應該裁剪圖像 - 右 –

+0

BT?我怎麼知道圖像的哪個部分會被裁剪?我被要求調整圖像的寬度和高度,以便從圖庫中選取的照片看起來不會扭曲 – mars

+0

您應該讓用戶決定: D - 看我的回答 –

回答