Как установить stretchableImageWithLeftCapWidth в Интерфейсном конструкторе? - PullRequest
8 голосов
/ 14 апреля 2010

Как установить stretchableImageWithLeftCapWidth в построителе интерфейса?

Ответы [ 5 ]

9 голосов
/ 14 апреля 2010

Интерфейсный конструктор не поддерживает растягиваемые изображения.

-(void) viewDidLoad {
  [super viewDidLoad];
  [myImageView setImage:[[myImageView image] stretchableImageWithLeftCapWidth:5 topCapHeight:5 ]];
}
2 голосов
/ 01 октября 2012

В настоящее время (начиная с версии 4.5) ограничение InterfaceBuilder. Однако необходимость создавать IBOutlet для каждой кнопки и вручную указывать, что изображение растягивается в viewDidLoad, не является отличным решением, если только по каким-либо причинам оно не делает создание пользовательского интерфейса более громоздким и более хрупким.

Вместо этого давайте создадим подкласс UIButton, который по умолчанию сделает любое фоновое изображение растягиваемым. В этом примере я растягиваю только нормальное и подсвеченное фоновое изображение. Для готового к работе класса вы, вероятно, захотите проверить все состояний фоновых изображений и изображений переднего плана и растянуть их.

@implementation NTSTButton

- (id) initWithCoder:(NSCoder *)aDecoder {

    self = [super initWithCoder:aDecoder];
    if (self) {
        /* There is no support in IB for stretchable images. So, let's
           make sure _any_ background image assigned to this button 
           stretches correctly.
           Note: Setting the stretch cap to 10px, which should work with
           almost all button background images. 
        */
        UIImage *normalImage = 
                 [[self backgroundImageForState:UIControlStateNormal]
                        stretchableImageWithLeftCapWidth:10 topCapHeight:10] ;

        UIImage *highlightedImage = 
                 [[self backgroundImageForState:UIControlStateHighlighted]
                        stretchableImageWithLeftCapWidth:10 topCapHeight:10] ;

        [self setBackgroundImage:normalImage 
              forState:UIControlStateNormal];

        [self setBackgroundImage:highlightedImage 
              forState:UIControlStateHighlighted];
    }
    return self;
}

@end
0 голосов
/ 10 июля 2015

Использовать Stretching конфиги в View разделе.

  • Прежде всего, измените режим просмотра на Aspect fill.

  • Затем отредактируйте поля X, Y, Width, Height в Stretching части. Например: допустим, у вас есть размер изображения 10x20, и вы хотите разместить его в размере 5x10 ==> Установите X = 5/10 = 0,5, Y = 10/20 = 0,5

ПРИМЕЧАНИЕ : IB не позволяет использовать изображение меньшего размера для «растягивания» в большую рамку, поэтому вам необходимо максимально увеличить размер изображения

0 голосов
/ 20 декабря 2013

iOS7 также представила каталоги активов, где вы можете указать растягиваемую область ваших изображений, но это работает только в том случае, если вы поддерживаете только iOS7 (т. Е. Вас не волнуют пользователи исходного iPad, iPod touch или 3GS; в iOS нет фрагментации).

См. https://developer.apple.com/library/ios/recipes/xcode_help-image_catalog-1.0/SlicinganImage/SlicinganImage.html#//apple_ref/doc/uid/TP40013303-CH4-SW1

0 голосов
/ 13 декабря 2012

Аналогично @answerbot, но обновлено для iOS 5.0+, так как stretchableImageWithLeftCapWidth:topCapHeight: устарело.

@implementation UIButtonStretchable

- (id) initWithCoder:(NSCoder *)aDecoder {
    self = [super initWithCoder:aDecoder];
    if (self) {
        [self setBackgroundImage: [[self backgroundImageForState:UIControlStateNormal] resizableImageWithCapInsets:UIEdgeInsetsMake(22,6,22,6)]forState:UIControlStateNormal];
        [self setBackgroundImage: [[self backgroundImageForState:backgroundImageForState:UIControlStateHighlighted] resizableImageWithCapInsets:UIEdgeInsetsMake(22,6,22,6)]forState:backgroundImageForState:UIControlStateHighlighted];
    }
    return self;
}
@end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...