关于可可触摸控制的extensiblity问题(Question about extensiblit

2019-10-16 21:38发布

我是新来编程的iPhone,我想知道:如何扩展是各种控制? 让我们以按钮为例:

  • 我可以改变背景图片?
  • 我可以让它长得更大时,我按下了吗?
  • 我可以改变字体?
  • 我可以使用自定义字体?
  • 我可以用一个按钮图形来代替文字?

Answer 1:

在一般情况下,是你所有的问题。 你也可以继承的各种UI *类组成可可触摸控制,就像任何其他类,并在适当的方法添加自己的自定义功能。 唯一棘手的部分是找出确切位置在哪里你的代码应该去。

让我们来看看你的UIButton实例,并通过你想用它做什么走。

背景图

该UIButton的类已经有一个方法setBackgroundImage:forState:让你改变的UIImage按钮时显示它在几个州,如正常,高亮,残疾人之一,依此类推。

例如,为了改变图像按钮显示为正常背景为“backgroundImage.png”,这是在应用程序的包中的图像文件:

//Presuming you have some UIButton *button:
UIImage *bgImage = [UIImage imageNamed:@"backgroundImage.png"];
[button setBackgroundImage:bgImage forState:UIControlStateNormal];

越来越大

可以更改按钮的frame通过添加在管理按钮视图控制器.m文件这样做,然后加入该方法作为用于在按钮上的控制事件的动作的方法(一种遗传从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;
}

同时保持其中心同本加倍您的按钮的大小。 (小心你的按钮并不在成长,当你这样做你的观点的边缘。)

更改字体

简单地改变font的UIButton的财产-将其设置为UIFont的新实例,就像这个例子:

button.font = [UIFont systemFontOfSize:16.0];

这改变了按钮的字体到系统的字体大小为16。

自定义字体

这是一个有些棘手的问题,因为我敢肯定你不能加载自己的自定义字体文件,即使你将它们包含在您的应用程序包。 你可以,但是,通过使用UIFont的改变控件的默认字体fontWithName:size:类方法。 所有字体的名称都可以通过UIFont的familyNamesfontNamesForFamilyName:方法。

按钮图形代替文本

这是最简单的五-只是不设置按钮上的文本,而是设置一个背景图片UIControlStateNormal (见上文)。



Answer 2:

是。

1,3,4和5可以在没有代码使用在界面生成器按钮的属性来实现。 改变字体,调出字体面板(命令-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];
}


文章来源: Question about extensiblity of Cocoa Touch Controls