2014-02-15 1 views
2

У меня возникли проблемы с использованием разрезания в каталоге изображений Xcode. У меня есть изображение в каталоге активов с изображением с именем «SquareReactionButtonCrisp» в этом каталоге. В моем xib я ссылаюсь на это имя, чтобы установить его как фон. И все же, когда я изменяю размер этой кнопки в xib и перестраиваю, изображение растягивается, а не расширяется от линий среза. Есть идеи? Прикрепленные скриншоты. Спасибо, SamXCode images.assets разрез каталога активов игнорировался, а изображения все еще оставались

enter image description here

enter image description here

enter image description here

ответ

6

Каталог активов была введена с Xcode 5, но использовать функции изображения срезов каталога активов ваша цель развертывания должен быть установлен в iOS7 , Если ваша цель установлена ​​на iOS 6, это может быть причиной вашей проблемы. См. Аналогичную должность, где человек ответил на свой вопрос. How do you use an asset catalog image's slicing information programmatically?

+0

Спасибо - в этом была проблема - я также поддерживал iOS 6 - планировал использовать вставки для крышки на 6 (и затем удалять через несколько месяцев после того, как потребление ios 7 почти полностью). Они должны сделать это более ясным. –

2

Мое решение, совместимое с iOS 6/7, использует атрибуты 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

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

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