2009-05-24 3 views
9

Я хотел бы извлечь значки UIBarButtonItem по умолчанию из iPhone SDK. Я предполагаю, что они, вероятно, хранятся на платформе iPhoneSimulator в виде альфа-канальных PNG, но я еще не нашел их.Как извлечь иконки UIBarButtonItem из iPhone SDK?

Тот, который я ищу, это UIBarButtonSystemItemReply. (Для тех, кто подозревает, что для этого существует даже допустимый прецедент, я хочу использовать его в заголовке строки таблицы, где пользователь может публиковать ответы, по ряду)

ответ

4

Файл с файлом Other.artwork находится в /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library/Frameworks/UIKit.framework/ (вам нужен SDK).

Используйте программу «iPhoneShop-1.3.jar», доступную в настоящее время here, чтобы извлечь все изображения в каталог.

java -jar iPhoneShop-1.3.jar ARTWORK Other.artwork EXPORT Other 
+1

Смотрите здесь еще один инструмент, который работает с прошивкой 4.3 файлы https://github.com/davepeck/iphone-tidbits/tree/master/iOS-artwork – sdsykes

+1

Как уже упоминалось в моем комментарии в непринятый ответ ниже, я сделал: в папке /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/D eveloper/SDKs я сделал: 'find. -iname "* .png *" -print0 -exec cp {} ~/tmp \; ' – fatfreddyscat

1

Я не знаю, как это сделать , однако мне было любопытно об одном и том же месте несколько месяцев назад. Вы можете инициализировать этот UIBarButtonItem и извлечь из него изображение, перейдя через все элементы в UIView и сбросив NSImages. Я точно не знаю, как это сделать, но я помню, что Эрика Садун написала статью об использовании полноэкранного изображения. Мне не разрешено добавлять ссылку на него, так что просто Google для «полноэкранной камеры« erica sadun ».

17

Чтобы скопировать все iPhone (или MacOS) системные иконки перейти в каталог:

cd /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/ 

=> там может быть больше, чем одна iPhoneSimulator версия (iPhoneSimulator4.3.sdk), просто выберите один Вы предпочитаете. И чем выполнить следующую команду:

find . -iname "*.png*" -print0 | xargs -I{} -0 cp -v {} /tmp/iPhoneIcons/ 

/tmp/iPhoneIcons/ => является каталог назначения

+0

+1 Это работает в bash; чтобы использовать его в tcsh, обратите внимание, что вам нужно поставить одинарные кавычки вокруг обоих наборов фигурных скобок: '' {} '' –

+6

Начиная с Mac OS 10.8 каталог SDK переместился в' /Applications/Xcode.app/Contents/Developer/ Платформы/iPhoneSimulator.platform/Developer/SDKs' – alex

+0

не работали для меня (он просто скопировал + заменял каждое изображение снова и снова, так что в конце я остался с одним изображением, без расширения, это было последнее изображение скопировано), поэтому вместо этого в папке /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/D eveloper/SDKs я сделал: 'find. -iname "* .png *" -print0 -exec cp {} ~/tmp \; ' – fatfreddyscat

0

Это старая нить, но я нашел его в Google. Я успешно извлек изображения из UIBarButtonItems, инициализированных элементами системы, используя код ниже. Все программы-экстракторы не делали этого на iOS 6, или были слишком сложны для меня. Поскольку мне нужны только 5-6 изображений, я просто получил их вручную.

- (void)viewDidAppear:(BOOL)animated { 

UIView *v1 = self.navigationController.navigationBar; 
for (int i = 0; i < v1.subviews.count; i++) 
{ 
    UIView *v2 = [v1.subviews objectAtIndex:i]; 
    NSLog(@"%i %@", i, [v2 class]); 
    if (i == 2) 
    { 
     for (int j = 0; j < v2.subviews.count; j++) 
     { 
      UIView *v3 = [v2.subviews objectAtIndex:j]; 
      NSLog(@" %i %@", j, [v3 class]); 

      if (j == 1) 
      { 
       // In my test, this view was UIImageView containing button image 
       UIImageView *iv = [[UIImageView alloc] initWithImage:((UIImageView *)v3).image]; 
       [self.view addSubview:iv]; 
      } 
     } 
    } 
} 

}

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