我是iPhone的编程新手,我想知道:各种控件的可扩展性如何?我们以按钮为例:
答案 0 :(得分:3)
是
使用Interface Builder中按钮的属性,可以在没有代码的情况下完成1,3,4和5。要更改字体,请在选中按钮的情况下调出字体面板(Command-T)。使按钮增长需要添加单击时执行的代码。您可以在视图控制器中放置这样的几行,它应该可以解决这个问题:
- (void)buttonClicked:(id)sender
{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration: 0.4];
[sender setFrame:CGRectMake(--,--,--,--)]; //replace with slightly bigger button frame
[UIView commitAnimations];
}
答案 1 :(得分:2)
一般来说,对所有问题都是肯定的。您可以像构建其他类一样继承构成Cocoa触摸控件的各种UI *类,并在适当的方法中添加自己的自定义功能。唯一棘手的部分是弄清楚你的代码到底应该去哪里。
让我们看一下您的UIButton示例,并逐步了解您想要用它做什么。
背景图片
UIButton类已经有一个方法setBackgroundImage:forState:
,可以让你更改按钮在处于几种状态之一时显示的UIImage,例如Normal,Highlighted,Disabled等。
例如,要更改图像,按钮会显示为“backgroundImage.png”的正常背景,“backgroundImage.png”是应用程序包中的图像文件:
//Presuming you have some UIButton *button:
UIImage *bgImage = [UIImage imageNamed:@"backgroundImage.png"];
[button setBackgroundImage:bgImage forState:UIControlStateNormal];
越来越大
您可以通过在管理按钮的视图控制器.m文件中添加一个方法来更改按钮的frame
(来自UIView的继承属性),然后将该方法添加为控件事件的操作在按钮上。
假设您想要将按钮的大小加倍。在viewDidLoad:
或类似地方,添加以下代码:
[button addTarget:self action:@selector(growButton)
forControlEvents:UIControlEventTouchDown];
然后使用以下代码创建方法growButton
:
- (void)growButton {
CGRect currentFrame = button.frame;
CGRect newFrame = CGRectMake(currentFrame.origin.x - currentFrame.size.width / 2,
currentFrame.origin.y - currentFrame.size.height / 2,
currentFrame.size.width * 2,
currentFrame.size.height * 2);
button.frame = newFrame;
}
这使按钮尺寸加倍,同时保持其中心相同。 (当你这样做时,小心你的按钮不会在视图的边缘上生长。)
更改字体
只需更改UIButton的font
属性 - 将其设置为UIFont的新实例,如下例所示:
button.font = [UIFont systemFontOfSize:16.0];
这会将按钮的字体更改为系统的字体,大小为16。
自定义字体
这是一个有点棘手的问题,因为我很确定你无法加载自己的自定义字体文件,即使你将它们包含在你的应用程序包中也是如此。但是,您可以使用UIFont的fontWithName:size:
类方法更改控件的默认字体。所有字体名称均可通过UIFont的familyNames
和fontNamesForFamilyName:
方法获得。
按钮图形而不是文字
这是五个中最简单的 - 只是不要在按钮上设置文字,而是为UIControlStateNormal
设置背景图片(见上文)。