美文网首页JC专题
11、UIView与常用组件(一)

11、UIView与常用组件(一)

作者: HQ今日磨墨 | 来源:发表于2015-08-01 17:08 被阅读96次

    通俗点讲,看得见、摸得着的就是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表示常量,这只是一种习惯 ,还有的程序员习惯宏名全部大写,我们注重代码可读性简洁即可)。

    相关文章

      网友评论

        本文标题:11、UIView与常用组件(一)

        本文链接:https://www.haomeiwen.com/subject/nucvqttx.html