Почему initWithFrame имеет неправильное значение кадра? - PullRequest
0 голосов
/ 17 апреля 2010

У меня есть подкласс UIButton INMenuCard, и я перезаписываю initWithFrame, чтобы включить индикатор активности. MenuCard размещается правильно, но любая внутренняя ссылка на «frame» дает мне «inf, inf, 0,0», что означает, что мое подвид ActivityIndicator размещено неправильно. Чего мне не хватает?

@implementation INMenuCard

- (id)initWithFrame:(CGRect)frame 
{
    if (self = [super initWithFrame:frame]) 
    {

        CGRect innerFrame = CGRectInset(frame, 50.0f, 100.0f);
        activityIndicator = [[UIActivityIndicatorView alloc]
                             initWithFrame:innerFrame];
        activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhite;
        [self addSubview:activityIndicator];
    }
    return self;
}

Я создаю экземпляр INMenuCard с помощью (отладка показывает, что значения CGRect верны):

 CGRect cardFrame = CGRectMake(cardX, cardStartY, cardWidth, cardHeight);
 INMenuCard *menuCard = [[INMenuCard buttonWithType:UIButtonTypeCustom] initWithFrame:cardFrame];
 [theView addSubView:menuCard];

1 Ответ

3 голосов
/ 17 апреля 2010

Если вы звоните initWithFrame на что-то, что уже init 'ed?

Мне кажется, что строка [INMenuCard buttonWithType:UIButtonTypeCustom] вызывает ярлык UIButton, который делает [[UIButton alloc] init] для вас.

...