2013-11-07 2 views
0

Можно ли каким-либо образом изменить размер изображения в моем навигационном программном обеспечении, а не изменять вручную?установить размер изображения программно

Вот код, который создает кнопку:

UIBarButtonItem *Share = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"fb_share.png"] style:UIBarButtonItemStyleBordered target:self action:@selector(Share:)]; 

Мои изображения размером 256 * 256, так что просто показать в этом разрешении и весь экран перепутались.

ответ

3

Вы просто хотите изменить размер изображения? Если да, то, как это должно работать:

// Given a UIImage image and a CGSize newSize: 

UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0); 
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; 
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

Затем используйте newImage для образа UIBarButtonItem.

+0

, но как я могу объединить его с моим кодом? – TomasJ

+0

только что видел редактирование, попробуем это – TomasJ

+1

Вы должны сначала объявить свой UIImage, очевидно, а также установить информационную ленту CGSize. Но это должно сработать, если я не ошибаюсь. Кроме того, это может помочь, если у вас все еще есть проблемы: http://stackoverflow.com/questions/6435118/how-set-images-on-buttons-of-navigation-bar?rq=1 –

3

Нормальный вы должны использовать contentMode (в данном случае UIViewContentModeScaleAspectFit) каждый подкласс UIView имеет это свойство, как правило, вы можете использовать его для UIImageView. Но я почти уверен, что не работает с UIBarButtonItem. Попытайтесь, но вы можете ударить по стене.

Если мое предсказание было правдой, вы должны изменить размер изображения программно:

UIImage *myImage = [UIImage imageNamed:@"fb_share"]; 
float maximumHeight = 44; 
float ratio = maximumHeight/ myImage.size.height; 
CGSize imageNewSize = CGSizeMake(myImage.size.width*ratio, maximumHeight); 
UIGraphicsBeginImageContextWithOptions(imageNewSize, NO, 0.0); 
[myImage drawInRect:CGRectMake(0, 0, imageNewSize.width, imageNewSize.height)]; 
UIImage *resizedImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
UIBarButtonItem *Share = [[UIBarButtonItem alloc] initWithImage:resizedImage style:UIBarButtonItemStyleBordered target:self action:@selector(Share:)]; 
+0

да, но это только что отрегулировало высоту изображения. Как только я попытаюсь настроить maxWidth, появляется всплывающее сообщение: переопределение отношения. – TomasJ

+0

Ооо я ошибся. Измените третью строку из 'float ratio = myImage.size.height/maximumHeight;' to 'float ratio = maximumHeight/myImage.size.height;' – Kuba

+0

Если у вас есть ошибка переопределения, вы должны искать это переопределение (вы объявляете одно и то же имя переменной дважды). – Kuba

Смежные вопросы