视图在ViewDidLoad期间跳转

时间:2010-06-07 20:36:49

标签: iphone interface-builder viewdidload

我有一个自定义按钮,来自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 :(得分:0)

我没有看到这个问题,但听起来按钮的初始框架是小的。当按钮从笔尖加载时,它会使用笔尖中指定的框架绘制自己。只有在启动和运行后才能自行调整其他因素。

更改字体大小不是通常在初始化期间完成的,它有很多副作用,因此在按钮完全初始化之前,类可能会忽略sizeToFit。

我认为最简单的方法是将IB中的帧设置为您想要使用的字体所具有的帧。这样,你根本看不到过渡。

如果按钮在绘制后不必更改大小,我建议使用图像而不是文本。只需拨打一个Gimped按钮即可完成。

答案 1 :(得分:0)

以下是我正在做的一个例子:

在调用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的建议不一致?