美文网首页
iOS UIButton布局

iOS UIButton布局

作者: 三岁就很乖 | 来源:发表于2016-09-12 11:06 被阅读51次
    关于setTitleEdgeInsets和setImageEdgeInsets下面进行一些解释:
    UIButton内有两个控件titleLabel和imageView,可以用来显示一个文本和图片,这里的图片区别于背景图片。给UIButton设置了title和image后,它们会图片在左边,文本在图片右边显示。它们两个做为一个整体依赖于button的contentHorizontalAlignment居左居右或居中显示。
    
    显示格式区分:
    1.当button.width < image.width时,只显示被压缩后的图片,图片是按照fillXY的方式压缩。
    2.当button.width > image.width,且button.width < (image.width+text.width)时,图片正常显示,文本被压缩。
    3.当button.width > (image.width+text.width)时,两者并列默认居中显示,可通过button的属性contentHorizontalAlignment改变对齐方式。
    
    想改变两个子控件的显示位置,可以分别通过setTitleEdgeInsets和setImageEdgeInsets来实现。对titleLabel和imageView设置偏移是针对他当前的位置起作用的,并不是针对距离button边框的距离的。
    
    
    UIEdgeInsets是个结构体类型。里面有四个参数,分别是:top, left, bottom, right。这四个参数表示距离上边界、左边界、下边界、右边界的距离。
    这四个参数的值可以为正值,也可以为负值。拿left举例:
    
    left = 10; //代表以当前位置为基准,向右移动10个像素
    left = -10; //代表以当前位置为基准,向左移动10个像素
    向右移动20个像素
    
    
    //代表以当前位置为基准,向下移动10个像素
    top = 10
    
    如果向上偏移则top为负值
    
    
    例如:
    UIButton *btn1 = [UIButton buttonWithType:UIButtonTypeCustom];
        btn1.frame = CGRectMake(50, 100, 80, 40);
        [btn1 setImage:[UIImage imageNamed:@"icon_shouye"] forState:UIControlStateNormal];
        [btn1 setTitle:@"首页" forState:UIControlStateNormal];
        [btn1 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
        btn1.backgroundColor = [UIColor redColor];    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
        btn.frame = CGRectMake(50, 50, 80, 40);
        [btn setImage:[UIImage imageNamed:@"icon_shouye"] forState:UIControlStateNormal];
        [btn setTitle:@"首页" forState:UIControlStateNormal];
        [btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
        btn.backgroundColor = [UIColor redColor];    //上左下右
     
        btn.imageEdgeInsets = UIEdgeInsetsMake(0, btn.frame.size.width - btn.imageView.frame.origin.x - btn.imageView.frame.size.width, 0, 0);
        btn.titleEdgeInsets = UIEdgeInsetsMake(0, -(btn.frame.size.width - btn.imageView.frame.size.width ), 0, 0);
        [self.view addSubview:btn1];
        [self.view addSubview:btn];
    
    
    FAF0CE6C-C0DA-4F47-ACC4-E59F16502713.png

    相关文章

      网友评论

          本文标题:iOS UIButton布局

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