zoukankan      html  css  js  c++  java
  • 关于UIButton中,文字和图片交换位置的代码

    UIButton中,如果文字和图片都同时存在的话,系统默认图片在左边,文字在右边,有些UI需求是图片在右边,文字在左边,这就需要用代码调试,使UIButton中两个元素的位置发生交换。

    设置UIButton的两个属性可以达到交换的目的,这两个属性是titleEdgeInsets和imageEdgeInsets.

    UIEdgeInsets为一个结构体

    typedef struct UIEdgeInsets {
          CGFloat top, left, bottom, right;     
    } UIEdgeInsets;

    这个结构体表示上,左,下,右的偏移量,

    top : 为正数的时候,是往下偏移,为负数的时候往上偏移;

    left : 为正数的时候往右偏移,为负数的时候往左偏移;

    bottom : 为正数的时候往上偏移,为负数的时候往下偏移;

    right :为正数的时候往左偏移,为负数的时候往右偏移;

    两个元素,文字和图片交换的第一步,要取得这两个元素的宽度值

    CGFloat labelWidth = button.titleLabel.intrinsicContentSize.width; //注意不能直接使用titleLabel.frame.size.width,原因为有时候获取到0值
    CGFloat imageWidth = button.imageView.frame.size.width;
    CGFloat space = 8.f; //定义两个元素交换后的间距

    第二步设置button偏移量属性

    button.titleEdgeInsets = UIEdgeInsetsMake(0, - imageWidth - space,0,imageWidth + space);
    button.imageEdgeInsets = UIEdgeInsetsMake(0, labelWidth + space, 0,  -labelWidth - space);
  • 相关阅读:
    测试72.思维好题
    pbds:STL平衡树
    测试69。这场因为轻视少了很多分。
    C++ 中的四种类型转换
    C++ 中的static关键字
    codeforces 1269 E K Integers
    P4556 [Vani有约会]雨天的尾巴 (线段树合并)
    P3521 [POI2011]ROT-Tree Rotations (线段树合并)
    codeforces 600E E. Lomsat gelral (线段树合并)
    线段树合并的一些题
  • 原文地址:https://www.cnblogs.com/csdnmc/p/6703451.html
Copyright © 2011-2022 走看看