11、UIView与常用组件(一)

通俗点讲,看得见、摸得着的就是UIView。贴上UIKit 和 UIView 的关系图:

UIKit关系图.png
UIView关系图.png

UI组件使用

  • UIView
  • UIButton UIControl
  • UIImageView UILabel
  • UIAlertView UIActionSheet
  • UITextField UITextView
  • UIProgressView
  • UISwitch UISlider UISegmentedControl
  • UIScrollView
  • UIPageView
  • UIWebView
  • UIBarButtonItem
  • UIToolBar
  • UIActivityIndicatorView
  • UITableView

UIButton:

UIButton *pushButton = [UIButton buttonWithType:UIButtonTypeCustom];

如果你不想使用类方法创建也是可以的:

pushButton = [[UIButton alloc] init];

在设置 UIButton 组件的背景色时, 会经常设置 clearColor 这个颜色。


有时,我们在为 button 设置背景图片的时候,会因为图片大小的关系,导致出来的效果失真、不协调。解决方法一是让UI设计师制作一个大小合规的图片,另一种方法就是手动代码对图片进行拉伸:

UIImage *blueBGImage = [UIImage imageNamed:@"blueButton.png"];
UIImage *stretchableBlueBGImage = [blueBGImage stretchableImageWithLeftCapWidth:10 topCapHeight:20];

当使用 stretchableImageWithLeftCapWidth: topCapHeight: 方法进行拉伸的时候,它拉伸图片的直线部分,因此不会造成图片的失真(失真的效果就是本来图片时一个四角圆润的长方体,拉伸之后成为了椭圆形状)。方法的意思是分别从图片左上角往右和往下 ?points(同样会映射到图片从右往左,从下往上的部分,能保证图片四角都照顾到) 进行拉伸,只要确保输入的数字是在直线段,拉伸的效果就不会失真了。(主要是这个方法可以保证图片的四个角不会变化)注意,这个方法最后会生成一个新的图片,使用时注意选择。`

[pushButton SetBackgroundImage:stretchableBlueBGImage
                      forState:UIControlStateNormal];

当你希望在点击一个button之后,上面的title会发生变化,变成另外的文字,可以这样设置:

[presentButton setTitle:@"present modal view" forState:UIControlStateNormal];
[presentButton serTitle:@"clicked!" forState:UIControlStateHighlighted];

  上面两行代码,表示button在没有点击的时候,显示的title是present modal view,在点击之后没松开按钮的情况下title显示的是clicked!.


看下面一段代码:

[pushButton addTarget:self
               action:@selector(pushButtonClicked:)
     forControlEvents:UIControlEventTouchUpInside];

其中 addTarget: 参数代表执行的是谁。action:参数代表执行的是什么方法。至于为什么要在 pushButtonClicked 后面加冒号,是因为一般在这个方法名中都带有参数,所以都要加冒号(而参数一般就是本身)。一般我们会使用 UIControlEventTouchUpInside 这个点击事件,它是点击之后松开才会触发事件响应,这样会给误操作的用户一个修正的机会。直接按下就执行的方法是touchDown.
  看下面的一段代码:
设置宏可以保证代码的可读性(写在代码前面),即下面代码前两行。

#define kPushButtonTag          101
#define kPresentButtonTag       102

pushButton.tag = 100;
presentButton.tag = 200;

- (void)pushButtonClicked:(id)sender
{
    if (sender.tag == kPresentButtonTag) {

    } else if (sender.tag == kPushButtonTag) {

    }
}

- (void)presentButtonClicked:(id)sender
{

}

现在我们来介绍一下方法中带参数的作用。看上面的一段代码,有两个 selector 的方法,假设一种情况 :selector 的方法都指向一个同样的方法名例如 pushButtonClicked: 。如果需要做判断,就可以根据传入的button参数来判断。那么我们可以通过参数来获得各个button在提前设置的tag值来作出判断,选择使用哪一个方法。还存在一种情况,当代码太多的时候,我们找不到tag值,这时我们可以预先定义一个宏,如上面代码的第一和第二行的内容,这样代码就更具有可读性(宏名前带k表示常量,这只是一种习惯 ,还有的程序员习惯宏名全部大写,我们注重代码可读性简洁即可)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,924评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,781评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,813评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,264评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,273评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,383评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,800评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,482评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,673评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,497评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,545评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,240评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,802评论 3 304
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,866评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,101评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,673评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,245评论 2 341

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,331评论 25 707
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,340评论 0 17
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 11,994评论 4 61
  • 午夜挑灯如寒窗,读来读去著华章。功名何须不朽夜,裁剪快乐做衣裳。图片发自简书App
    昊水长天阅读 197评论 0 4
  • 当你在跟一个人聊天,而对方没有很好的回应你,你通常是什么反应。 是不是这样: 你有没有在听我说话?(平静地) 你能...
    余无忌阅读 1,728评论 4 17