Просмотры переходят во время ViewDidLoad - PullRequest
0 голосов
/ 08 июня 2010

У меня есть пользовательская кнопка, подкласс из UIButton, которая инициализируется, как показано ниже (очевидно, все, что делает кнопка - это использует собственный шрифт).

@implementation HWButton

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

    if (self = [super initWithCoder: decoder]) {

  [self.titleLabel setFont:[UIFont fontWithName: @"eraserdust" size: self.titleLabel.font.pointSize]];
    }

  return self;
}

Пока все хорошо. Но когда я использую пользовательский класс в своем перо и запускаю приложение, кнопка на первые доли секунды отображается как крошечная с маленьким текстом, а затем увеличивается. Таким образом, результат - то, чего я хочу, но я не хочу видеть переход. Кто-нибудь может поправить меня?

Спасибо. JP

Ответы [ 2 ]

0 голосов
/ 08 июня 2010

Вот пример того, что я делаю:

В вызывающем ViewController я использую следующий код для переключения представлений:

-(void)selectProfile:(User*)selectedUser{
    SelectGameViewController* selectGame=[[SelectGameViewController alloc]initWithNibName:@"SelectGame" bundle:nil];

    UIView* parent=self.view.superview; 

    [UIView beginAnimations:@"Show selection" context:nil];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
    [UIView setAnimationDuration:0.50f];
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:parent cache:YES];
    [selectGame viewWillAppear:YES];
    [self viewWillDisappear:YES];

    [parent insertSubview:selectGame.view atIndex:0];
    [self.view removeFromSuperview];

    [selectGame viewDidAppear:YES];
    [self viewDidDisappear:YES];
    [UIView commitAnimations];
}

Затем в появившемся представлении у меня есть следующий код в методе -viewWillAppear:

-(void)viewWillAppear:(BOOL)animated{

    UIButton* newButton=[[UIButton alloc]initWithFrame:CGRectMake(50, 150, 500, 150)];
    [newButton setTitle:@"Play" forState:UIControlStateNormal];
    [newButton setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
    [newButton.titleLabel setFont:[UIFont fontWithName:@"EraserDust" size:80]];
    [newButton addTarget:self action:@selector(playGame:) forControlEvents:UIControlEventTouchUpInside];
    newButton.transform = CGAffineTransformMakeRotation(-.2);
    [self.view addSubview:newButton];
    [newButton release];


    [super viewWillAppear:animated];
}

Результатом этого является то, что вид отображается при не повернутой кнопке, но затем сразу после ее отображения он поворачивается. Я очень смущен, так как это не противоречит предложению TechZen?

0 голосов
/ 08 июня 2010

Я не вижу этой проблемы, но похоже, что начальный кадр кнопки слишком мал.Когда кнопка загружается из пера, она рисует себя с рамкой, назначенной в пиру.Он настраивается на другие факторы только после запуска.

Изменение размера шрифта обычно не выполняется во время инициализации, и имеет много побочных эффектов, поэтому класс может игнорировать sizeToFit до полной инициализации кнопки.

Я думаю, что для вас проще всего установить рамку в IB на ту рамку, которую он будет иметь с тем шрифтом, который вы хотите использовать.Таким образом, вы не должны видеть переход вообще.

Если кнопка не должна изменять размер после рисования, я бы рекомендовал использовать изображение вместо текста.Просто достаньте кнопку Gimped и покончите с этим.

...