2014-01-17 2 views
4

Я использовал, чтобы иметь изображение в моем проекте, и я бы загрузить его, как это:Как программно вы используете информацию об изображении изображения каталога каталога активов?

UIImage *image = [[UIImage imageNamed:@"image_name"] resizableImageWithCapInsets:UIEdgeInsetsMake(10.0f, 10.0f, 10.0f, 10.0f)]; 

Теперь я ставлю этот образ в Xcode 5'в новом каталоге активов и я поставил нарезку для него. Как использовать это изображение в моем коде, чтобы я не мог явно позвонить resizableImageWithCapInsets при загрузке изображения?

Сказал другим способом, как я могу взять информацию о разрезе, хранящуюся в Images.xcassets, и сохранить ее в capInsets?

Или я думаю об этом все неправильно?

ответ

3

Хорошо, я смог понять это.

Чтобы автоматически использовать информацию о разрезе в изображении, хранящемся в каталоге активов (Images.xcassets), вам необходимо установить для своего целевого объекта развертывания 7.0 (или выше).

Надеюсь, что это поможет кому-то еще.

2

Мое решение, совместимое с iOS 6/7, использует атрибуты Runtime User Defined Runtime в файлах Xib. Так что нам не нужно писать неэлегантные строки во всем исходном коде, чтобы заменить изображение, установленное в xib, на растягиваемое изображение с накладками для кнопки.

Шаг 1: В Xib выберите кнопку и установите Атрибуты, определенные пользователем, на панели «Проверка идентификатора». Вы можете определить атрибут для установки вложенных надписей. Например, атрибут под названием «capEnabled» с простым логическим значением, чтобы указать, что мы хотим использовать стандартные кнопки для кнопки для кнопки. (Я намеревался приложить скриншоты, но мне сказали, что мне нужно как минимум 10 репутации для публикации изображения ... :-()

Шаг 2: Создайте категорию в UIButton и добавьте свойство «capEnabled» и реализуйте геттер и присваиватели

@interface UIButton (NBAHelper) 
@property (nonatomic, assign) BOOL capEnabled; 
@end 

@implementation UIButton (NBAHelper) 

-(BOOL)capEnabled{ 
    UIImage *buttonBackgroundImage = [self backgroundImageForState:UIControlStateNormal]; 
    CGFloat capLeft = buttonBackgroundImage ? buttonBackgroundImage.capInsets.left : 0; 
    return capLeft>0; 
} 

-(void)setCapEnabled:(BOOL)capEnabled{ 
    if (capEnabled) { 
     UIImage *buttonBackgroundImage = [self backgroundImageForState:UIControlStateNormal]; 
     if (buttonBackgroundImage) { 
      [self setBackgroundImage:[buttonBackgroundImage stretchableImageWithLeftCapWidth:5 topCapHeight:5] forState:UIControlStateNormal]; 
     } 
    } 
} 
@end 

Step3:.. импортируйте файл заголовка категории везде вы хотите использовать новую функцию для UIButton вы создали или просто импортировать его в файл .PCH

Надежда мое решение полезен для вас.

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