zoukankan      html  css  js  c++  java
  • iOS 通用button 上图下字

      UIButton *first = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, kHeight(80), kHeight(80))];
        [first setImage:[UIImage imageNamed:@"icon_index_housekeeping_10"] forState:UIControlStateNormal];
        [first setTitle:@"扫一扫" forState:UIControlStateNormal];
        [first.titleLabel setFont:kFont(14)];
        [first setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
        [first setTitleColor:kColor(0x444444ff) forState:UIControlStateHighlighted];
        [first setBackgroundColor:[UIColor whiteColor]];
        [first setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft];
        [first setContentVerticalAlignment:UIControlContentVerticalAlignmentTop];
        [first setTitleEdgeInsets:UIEdgeInsetsMake((kGetHeigh(first.bounds) - first.titleLabel.intrinsicContentSize.height ) /2 + first.imageView.intrinsicContentSize.height / 2 + (((kGetHeigh(first.bounds) - first.imageView.intrinsicContentSize.height - first.titleLabel.intrinsicContentSize.height)/2)/2), (kGetWidth(first.bounds) - first.titleLabel.intrinsicContentSize.width) / 2 - first.imageView.intrinsicContentSize.width, 0,0)];
        [first setImageEdgeInsets:UIEdgeInsetsMake((kGetHeigh(first.bounds) - first.imageView.intrinsicContentSize.height ) /2 - (((kGetHeigh(first.bounds) - first.imageView.intrinsicContentSize.height - first.titleLabel.intrinsicContentSize.height)/2)/2), (kGetWidth(first.bounds) - first.imageView.intrinsicContentSize.width)/2, 0, 0)];
    

    注释:

    (((kGetHeigh(first.bounds) - first.imageView.intrinsicContentSize.height - first.titleLabel.intrinsicContentSize.height)/2)/2)

    文字向下的偏移量 (总高度-图片高度-文字高度)/2)/2






    上面的算法过于复杂,重新写了一个:

     self.contentHorizontalAlignment = .left;
     self.contentVerticalAlignment = .top;

    这两个方法会让图片和文字按照居左居上进行排列,如果不做任何改动,会显示如下:


    设置完图片和文字的顺序后,可以进行修饰了

     //设置排列顺序为左上
                self.contentHorizontalAlignment = .left;
                self.contentVerticalAlignment = .top;
    if style == .CusButtonStyleOne {
                    //图上字下
                    let Titletop = (kGetHeigh(self.bounds) -  self.imageView!.intrinsicContentSize.height - self.titleLabel!.intrinsicContentSize.height)/3 * 2 + self.imageView!.intrinsicContentSize.height;
    
                    let Titleleft = (kGetWidth(self.bounds) - self.titleLabel!.intrinsicContentSize.width) / 2 - self.imageView!.intrinsicContentSize.width;
                    self.titleEdgeInsets = UIEdgeInsets.init(top:Titletop , left: Titleleft, bottom: 0, right: 0);
    
                    let imageTop = (kGetHeigh(self.bounds) - self.titleLabel!.intrinsicContentSize.height - self.imageView!.intrinsicContentSize.height) / 3;
                    let imgLeft = (kGetWidth(self.bounds) - self.imageView!.intrinsicContentSize.width)/2;
                    self.imageEdgeInsets = UIEdgeInsets.init(top: imageTop, left: imgLeft, bottom: 0, right: 0);
                    NSLog("%@", self.titleLabel?.text ?? "");
                }
    显示如下:

    
    
    
    
    
    
    
    
    
    
     
  • 相关阅读:
    win10 uwp 弹起键盘不隐藏界面元素
    win10 uwp 存放网络图片到本地
    win10 uwp 存放网络图片到本地
    sublime Text 正则替换
    sublime Text 正则替换
    win10 uwp 绘图 Line 控件使用
    win10 uwp 绘图 Line 控件使用
    AJAX 是什么?
    什么是 PHP SimpleXML?
    PHP XML DOM:DOM 是什么?
  • 原文地址:https://www.cnblogs.com/niit-soft-518/p/7843282.html
Copyright © 2011-2022 走看看