【Swift】UILabel 设置内边距

class UILabelPadding : UILabel {

    private var padding = UIEdgeInsetsZero

    @IBInspectable
    var paddingLeft: CGFloat {
        get { return padding.left }
        set { padding.left = newValue }
    }

    @IBInspectable
    var paddingRight: CGFloat {
        get { return padding.right }
        set { padding.right = newValue }
    }

    @IBInspectable
    var paddingTop: CGFloat {
        get { return padding.top }
        set { padding.top = newValue }
    }

    @IBInspectable
    var paddingBottom: CGFloat {
        get { return padding.bottom }
        set { padding.bottom = newValue }
    }

    override func drawTextInRect(rect: CGRect) {
        super.drawTextInRect(UIEdgeInsetsInsetRect(rect, padding))
    }

    override func textRectForBounds(bounds: CGRect, limitedToNumberOfLines numberOfLines: Int) -> CGRect {
        let insets = self.padding
        var rect = super.textRectForBounds(UIEdgeInsetsInsetRect(bounds, insets), limitedToNumberOfLines: numberOfLines)
        rect.origin.x    -= insets.left
        rect.origin.y    -= insets.top
        rect.size.width  += (insets.left + insets.right)
        rect.size.height += (insets.top + insets.bottom)
        return rect
    }

}

  代码说明:

    通过 IBInspectable 可以支持 UILable 在 Storyboard 里面就能指定内边距,非常方便:

    

  参考

 参考这篇文章 http://stackoverflow.com/questions/21167226/resizing-a-uilabel-to-accomodate-insets 改的,注意这篇文章 http://stackoverflow.com/questions/3476646/uilabel-text-margin 有问题。

本文转自博客园农民伯伯的博客,原文链接:【Swift】UILabel 设置内边距,如需转载请自行联系原博主。

时间: 2024-10-02 21:49:20

【Swift】UILabel 设置内边距的相关文章

Swift UILable 设置内边距实例代码_Swift

前言 对应一个曾经开发 Android 的人来说,没有这些基础属性简直令人发指,还是表喷这个,认真写代码 - - #  正文          代码实现: class UILabelPadding : UILabel { private var padding = UIEdgeInsetsZero @IBInspectable var paddingLeft: CGFloat { get { return padding.left } set { padding.left = newValue

可以简易设置文字内边距的EdgeInsetsLabel

可以简易设置文字内边距的EdgeInsetsLabel 最终效果: 源码: EdgeInsetsLabel.h 与 EdgeInsetsLabel.m // // EdgeInsetsLabel.h // EdgeInsetsLabel // // Created by YouXianMing on 14/10/27. // Copyright (c) 2014年 YouXianMing. All rights reserved. // #import <UIKit/UIKit.h> @int

CSS3 流式排版(使用em设置文字大小,以及外边距、内边距)

过去我们常用"硬编码"的字号(使用像素单位px)来设置文字的大小,但这种方式可能造成在大显示器上看着舒服的文字,到了移动设备的小屏幕上就会变得难以辨认. 1,使用em设置文字大小 百分比和em的结果相同,都是让文字相对于浏览器默认的文字大小缩放.比如:把文字大小设成110%或1.1em,结果就是比常规没有应用样式的文字大10%. 通常实现响应式布局的做法是:把页面的基准文字设置为100%,然后在其他元素中再用em单位放大或缩小文字. body{     font-size: 100%;

《响应式Web设计:HTML5和CSS3实践指南》——1.7节基于尺寸的响应式内边距

1.7 基于尺寸的响应式内边距为了衬托一个响应式宽度的图像元素,需要添加相对的内边距.如果使用静态的宽度内边距,图像内边距在较小的浏览器窗口中可能会显得过大,从而与其他附近元素相互挤压,甚至可能将图像挤出屏幕. 1.7.1 准备工作理解盒模型属性的计算是一个好的开始.一个对象所占的总宽度是它的实际宽度加上它两边的内边距,边框以及外边距,即 2 * (外边距+边框+内边距) + 内容的宽度 = 总宽度. 1.7.2 实现方式假设一张图像在正常的非响应式状态下的宽度为200px,典型的内边距可能是8

iOS开发中使用UILabel设置字体的相关技巧小结_IOS

一.初始化 复制代码 代码如下: UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(40, 40, 120, 44)];      [self.view addSubview:myLabel]; 二.设置文字 1.设置默认文本 复制代码 代码如下: NSString *text = @"标签文本"; myLabel.text = text; 效果: 2.设置标签文本(此属性是iOS6.0之后才出现,如若不是必要,不

css的内边距和外边距的auto怎么使用

问题描述 css的内边距和外边距的auto怎么使用 如下代码为什么内边距没变啊?内边距都为0了? td.test1 {padding: 20px auto} 这个表格单元的每个边. 解决方案 http://www.w3school.com.cn/css/css_margin.asp

CSS3中清除外边距、内边距margin,padding使用方法

建议给html页面创建样式时,首先添加如下CSS样式,将所有的元素内外间距都设为0: {     margin: 0px;     padding: 0px; } 因为如果我们不明确定义,由于不同浏览器处理策略不同,有的默认间距就设为0,而有的却有默认值.这样就会造成不同浏览器下显示的差异. 例子 去除html标签默认的外边距margin和内边距padding body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,

UILabel设置多种字体、颜色

前言 开发中常用到的设置UILabel的文本样式代码片段: NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:@"Using NSAttributed String,try your best to test attributed string text"]; [str addAttribute:NSForegroundColorAttributeName value:[

图解CSS(3)padding(内边距)、margin(外边距)

padding padding-top padding-right padding-bottom padding-left margin margin-top margin-right margin-bottom margin-left padding: 上.右.下.左; {从上按顺时针转的}