IOS 6 - 自定义 UIButton 如何给我的 titleLabel 留出余量?

Posted

技术标签:

【中文标题】IOS 6 - 自定义 UIButton 如何给我的 titleLabel 留出余量?【英文标题】:IOS 6 - Custom UIButton how to give my titleLabel a margin? 【发布时间】:2013-03-19 09:52:19 【问题描述】:

我在 drawRect: 方法中为我的 UIButton 子类绘制了一个插入矩形边框。 如您所见,该形状离我的按钮 titleLabel 框架太近了。如何设置 titleLabel 的最大宽度/边距以避免这种情况?

DrawRect: 方法

- (void)drawRect:(CGRect)rect 
[super drawRect:rect];

  CGContextRef context = UIGraphicsGetCurrentContext();

  CGContextSetStrokeColorWithColor(context, [UIColor bluecolor].CGColor);

CGContextSetLineWidth(context, 2.0);

CGContextMoveToPoint(context, 4,4);

CGContextAddLineToPoint(context, 56, 4);
CGContextAddLineToPoint(context, 56, 56);
CGContextAddLineToPoint(context, 4, 56);
CGContextAddLineToPoint(context, 4,3);

// and now draw the Path!
CGContextStrokePath(context);

【问题讨论】:

【参考方案1】:

在drawRect方法中使用self.titleEdgeInsets=UIEdgeInsetsMake(0, 5, 0, 5);

【讨论】:

【参考方案2】:

试试这个代码....

 UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    UIEdgeInsets edgeInsets = button.titleEdgeInsets;
    edgeInsets.left -= 5;
    edgeInsets.right += 5;
    button.titleEdgeInsets = edgeInsets;

【讨论】:

【参考方案3】:

在 xCode 中,可以使用 Inset 属性进行设置,如下面的屏幕截图所示:

【讨论】:

以上是关于IOS 6 - 自定义 UIButton 如何给我的 titleLabel 留出余量?的主要内容,如果未能解决你的问题,请参考以下文章

iPhone iOS自定义UIButton与CAGradientLayer,如何让它指示触摸?

如何在 iOS 中创建一个非常自定义的 uibutton,如 UITableViewCellStyleSubtitle

如何在 Swift 中创建具有自定义形状的 UIButton?

iOS View自定义窍门——UIButton实现上显示图片,下显示文字

IOS开发UIButton详解

iOS-UIButton 自定义目标