更改UIButton上的文本大小

时间:2010-05-27 15:40:55

标签: iphone interface-builder ios-simulator uibutton

客户希望我做点什么,我刚检查过,我很确定它不可能。 他要求在按钮(UIButton)上放置一个文本。 (默认状态配置) 当用户点击它时,文字应该放大。 (Highligted State Configuration) 我通过选择Highligted State Configuration进行检查,然后在Interface Builder中更改了文本的大小,但我没有工作。默认状态配置的文本也已更改。如果有办法,请告诉我。

谢谢!

泰穆尔

3 个答案:

答案 0 :(得分:10)

您可能无法在IB中执行此操作,但您当然可以通过一对操作来执行此操作。我假设突出显示的状态仅在按下按钮时才有效。如果不是这种情况,您可以修改此代码(在突出显示的状态结束时将状态切换回正常状态)。

- (IBAction)buttonDown:(id)sender {
    UIButton *button = (UIButton *)sender;
    button.titleLabel.font = [UIFont boldSystemFontOfSize:18.0];
}

- (IBAction)buttonUp:(id)sender {
    UIButton *button = (UIButton *)sender;
    button.titleLabel.font = [UIFont boldSystemFontOfSize:15.0];
}

答案 1 :(得分:7)

  btn.titleLabel.adjustsFontSizeToFitWidth = TRUE;

所以它会根据按钮宽度自动调整文本大小......

答案 2 :(得分:1)

这实际上并不难做到。您需要在类中创建两个IBAction,onTouchDown和onTouchUp。为您的按钮创建一个IBOutlet。然后,转到Interface Builder并将按钮连接到IBOutlet,并将“Touch Down”操作连接到“onTouchDown”,并将“Touch Up Inside”和“Touch Up Outside”的操作连接到“onTouchUp”。

onTouchDown是您设置突出显示字体的地方。 onTouchUp是你重置按钮的地方。

你的头文件最终会看起来像这样:

@interface TestViewController : UIViewController {
    UIButton *testButton;
}


@property (nonatomic, retain) IBOutlet UIButton *testButton;
- (IBAction)onTouchDown;
- (IBAction)onTouchUp;

现在,在“onTouchDown”功能中,您将要做的就是:

1)存储按钮的当前尺寸

2)更改字体大小

3)告诉按钮自动调整大小(这是关键)

4)根据旧尺寸

将按钮居中

你应该有一个最终看起来像这样的函数:

- (IBAction)onTouchDown:(id)sender
{
    CGRect oldBtnRect = testButton.frame;
    testButton.titleLabel.font = [UIFont systemFontOfSize:36];
    [testButton sizeToFit];
    testButton.frame = CGRectMake(testButton.frame.origin.x - ((testButton.frame.size.width - oldBtnRect.size.width)/2), testButton.frame.origin.y - ((testButton.frame.size.height - oldBtnRect.size.height)/2), testButton.frame.size.width, testButton.frame.size.height);
}

注意,字体大小为36。

在你的修饰功能中,它看起来像这样:

- (IBAction)onTouchUp:(id)sender
{
    CGRect oldBtnRect = testButton.frame;
    testButton.titleLabel.font = [UIFont systemFontOfSize:15];
    [testButton sizeToFit];
    testButton.frame = CGRectMake(testButton.frame.origin.x - ((testButton.frame.size.width - oldBtnRect.size.width)/2), testButton.frame.origin.y - ((testButton.frame.size.height - oldBtnRect.size.height)/2), testButton.frame.size.width, testButton.frame.size.height);
}

字体大小应该是您的默认字体。在这种情况下,我做了15。

这会给你一个从中心调整大小的按钮,而不仅仅是调整大小。

现在,代码并不是完美的。这只是你在这里所做的一般概念。我认为通过将这些代码重用到一个函数并传入您希望文本的大小,这对于某些代码重用来说是一个很好的选择。我只是觉得自己不喜欢这样做;)