swift 第四课

项目中经常遇到按钮改变文字和图片位置的情况,所以尝试写一个 button 的分类

import Foundation
import UIKit
/*枚举 设置 图片的位置*/
enum ButtonImagePosition : Int{

    case PositionTop = 0
    case Positionleft
    case PositionBottom
    case PositionRight
}

extension UIButton {/**imageName:图片的名字title:button 的名字type :image 的位置 Space :图片文字之间的间距    */
    func setImageAndTitle(imageName:String,title:String,type:ButtonImagePosition,Space space:CGFloat)  {

        self.setTitle(title, for: .normal)
        self.setImage(UIImage(named:imageName), for: .normal)

        let imageWith :CGFloat = (self.imageView?.frame.size.width)!;
        let imageHeight :CGFloat = (self.imageView?.frame.size.height)!;

        var labelWidth :CGFloat = 0.0;
        var labelHeight :CGFloat = 0.0;

        labelWidth = CGFloat(self.titleLabel!.intrinsicContentSize.width);
        labelHeight = CGFloat(self.titleLabel!.intrinsicContentSize.height);
        var  imageEdgeInsets :UIEdgeInsets = UIEdgeInsets();
        var  labelEdgeInsets :UIEdgeInsets = UIEdgeInsets();

        switch type {
        case .PositionTop:
                imageEdgeInsets = UIEdgeInsetsMake(-labelHeight - space/2.0, 0, 0, -labelWidth);
                labelEdgeInsets = UIEdgeInsetsMake(0, -imageWith, -imageHeight-space/2.0, 0);
            break;
        case .Positionleft:
                imageEdgeInsets = UIEdgeInsetsMake(0, -space/2.0, 0, space/2.0);
                labelEdgeInsets = UIEdgeInsetsMake(0, space/2.0, 0, -space/2.0);
            break;
        case .PositionBottom:
                imageEdgeInsets = UIEdgeInsetsMake(0, 0, -labelHeight-space/2.0, -labelWidth);
                labelEdgeInsets = UIEdgeInsetsMake(-imageHeight-space/2.0, -imageWith, 0, 0);
            break;
        case .PositionRight:
                imageEdgeInsets = UIEdgeInsetsMake(0, labelWidth+space/2.0, 0, -labelWidth-space/2.0);
                labelEdgeInsets = UIEdgeInsetsMake(0, -imageWith-space/2.0, 0, imageWith+space/2.0);
            break;
        }

        // 4. 赋值
        self.titleEdgeInsets = labelEdgeInsets;
        self.imageEdgeInsets = imageEdgeInsets;
    }
}
时间: 2024-10-24 18:45:33

swift 第四课的相关文章

第四课 文件系统(下)

====================第四课 文件系统(下)==================== 一.sync/fsync/fdatasync------------------------ 1. 大多数磁盘I/O都通过缓冲进行, 写入文件其实只是写入缓冲区,直到缓冲区满, 才将其排入写队列. 2. 延迟写降低了写操作的次数,提高了写操作的效率, 但可能导致磁盘文件与缓冲区数据不同步. 3. sync/fsync/fdatasync用于强制磁盘文件与缓冲区同步. 4. sync将所有被修改

【连载】创业能力培训第四课总结

创业能力培训第四课总结 以一个故事开头: 老师问:3加4等于多少? 学生答:3加4等于8 老师说了3句话: 1.很好! 2.离答案很接近了哦! 3.还有没有人有别的答案? 表扬,保持其积极性. 具备什么样的条件才能创业 一.明确的创业动机和目标 1.人无我有 2.人有我优 3.人优我特 二.熟悉所要创业的领域(行业.市场.客户等) 三.一定的创业资源(部分即可) 四.一定的知识技能 五.拥有创业精神 创业3要素: 1.机会 2.资源 3.团队 团队: 1.才能互补 2.责任共担 3.共同的创业目

微积分重点 第一课至第四课

1.微积分是关于两个函数间关系的学问 例如, 距离与速度的关系  f(t)  --- df/dt 高度与斜率的关系  y(x)  ---- dy/dx 函数1--->函数2:   求斜率 函数2--->函数1:   求面积,乘以自变量 两条曲线不同,但是包含了相同的信息 函数2表示了函数1在某一瞬间的变化率 2.导数的总览和计算 三个重要的基本函数:幂函数 三角函数 指数函数 求导过程: Δy/Δx 无限逼近取极限 就得到了 dy/dx sinx 在零点处斜率逼近1, 在pi/2处斜率为零,

Linux云自动化运维第四课

Linux云自动化运维第四课 一.vim 1.vim光标移动 1)在命令模式下 :数字  ###移动到指定的行 G  ###文件最后一行 gg  ###文件第一行 2)在插入模式下 i  ###光标所在位置插入 I  ###光标所在行行首 a  ###光标所在字符的下一个位置 A  ###光标所在行行尾 o  ###光标所在行下一行 O  ###光标所在行上一行 s  ###删除光标所在字符插入 S  ###删除光标所在行插入 2.vim的退出模式 :q  ###当用vim打开文件但没有对字符作

【Cocos游戏实战】功夫小子第四课之功夫小子之设置功能和图籍场景的实现

转载请注明出处:http://blog.csdn.net/suool/article/details/46553463 本节课的视频教程地址是: 第四课在此 如果本教程有帮助到您,希望您能点击进去观看一下,而且现在注册成为极客学院的会员,验证手机号码和邮箱号码会赠送三天的会员时间,手机端首次也可以领取五天的会员时间哦(即使是购买年会员目前也仅仅是年费260),成为极客学院学习会员可以无限制的下载和观看所有的学院网站的视频,谢谢您的支持! 第三课我们学习了过渡场景和主开始菜单的分析和实现.这节课我

NeHe OpenGL教程 第四十四课:3D光晕

转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线教程的编写,以及yarn的翻译整理表示感谢. NeHe OpenGL第四十四课:3D光晕 3D 光晕 当镜头对准太阳的时候就会出现这种效果,模拟它非常的简单,一点数学和纹理贴图就够了.好好看看吧. 大家好,欢迎来到新的一课,在这一课中我们将扩展glCamera类,来实现镜头光晕的效果.在日常生活中,

NeHe OpenGL教程 第十四课:图形字体

转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线教程的编写,以及yarn的翻译整理表示感谢. NeHe OpenGL第十四课:图形字体 图形字体: 在一课我们将教你绘制3D的图形字体,它们可像一般的3D模型一样被变换. 这节课继续上一节课课的内容.在第13课我们学习了如何使用位图字体,这节课,我们将学习如何使用轮廓字体. 创建轮廓字体的方法类似于

Spark 3000门徒第四课scala模式匹配和类型参数总结

今晚听了王家林老师的Spark 3000门徒系列第四课scala模式匹配和类型参数,总结如下: 模式匹配:def data(array:Array[String]){ array match{ case Array(a,b,c) => println(a+b+c) case Array("spark",_*) => //匹配以spark为第一元素的数组 case _ => ... }} 课后作业是: 阅读Spark源码 RDD.HadoopRDD.SparkConte

【Linux探索之旅】第四部分第四课:分析网络,隔离防火

内容简介 1.第四部分第四课:分析网络,隔离防火 2.第四部分第五课:源码编译,安装便利 分析网络,隔离防火 俗语说得好:爱国爱家爱师妹!  防火防盗防师兄! 虽然说,Linux本身很安全,至少比Windows安全多了.你看Linux发行版哪有安装杀毒软件的,同样基于修改的Unix系统的苹果的Mac OS系统也几乎不需要装杀毒软件. 如果Windows不装个杀毒软件,简直不好意思出门跟别人打招呼(日常黑Windows任务完成 :P).开个玩笑啦,Windows是很好的系统,小编也使用Window