添加填充到以编程方式创建的UILabel

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了添加填充到以编程方式创建的UILabel相关的知识,希望对你有一定的参考价值。

如何在以编程方式创建的UIlabel文本中添加填充?

NSArray *collectionViewArrayTitle = _titleArray[collectionView.index];
 NSString *title=   collectionViewArrayTitle[indexPath.item];
 newslabel =[[UILabel alloc] initWithFrame:CGRectMake(0, 80, 130, 50)];
_newslabel.textColor=[UIColor whiteColor];
_newslabel.backgroundColor=[UIColor blackColor]  ;
_newslabel.alpha=1.0f;
_newslabel.text=title;
_newslabel.tag=collectionView.index;
_newslabel.lineBreakMode=NSLineBreakByTruncatingTail;
_newslabel.numberOfLines=4;
答案

向标签添加“填充”的最佳方法是创建UILabel的子类并添加edgeInsets属性。

CustomLabel.h

#import <UIKit/UIKit.h>

@interface CustomLabel : UILabel

@property (nonatomic, assign) UIEdgeInsets edgeInsets;

@end
CustomLabel.m

#import "CustomLabel.h"

@implementation CustomLabel

- (id)initWithFrame:(CGRect)frame{
    self = [super initWithFrame:frame];
    if (self) {
        self.edgeInsets = UIEdgeInsetsMake(0, 10, 0, 0); //customize padding here
    }
    return self;
}

- (void)drawTextInRect:(CGRect)rect {
    [super drawTextInRect:UIEdgeInsetsInsetRect(rect, self.edgeInsets)];
}

@end

添加填充的另一种方法是使用第二层。这可能更容易实现,但它不是最干净的处理方式。您可以添加带有标签大小的UIView,然后使用一些填充调整该帧。然后,您可以将预期的UILabel添加到此视图,并使用原点来获得正确的填充方式。

另一答案

NSLayoutConstraint是Objc对象。您也可以通过编程方式创建它们。或者您也可以在故事板中创建它们并将插座拖到控制器上并在代码上操作它们。

在代码上,您可以使用NSConstrain类处理它,或者您可以使用VFL(可视格式语言)。无论如何,请检查Apple's documentation。一旦掌握了它,它就非常简单。

以上是关于添加填充到以编程方式创建的UILabel的主要内容,如果未能解决你的问题,请参考以下文章

WinForm C#如何将方法附加到以编程方式创建的控件

UILabel 具有来自编程约束的内部填充

为啥我的 UIView 的 UILabel 子视图不显示?

以编程方式将点击手势添加到 UILabel

Swift 3 以编程方式创建 UILabel 并添加 NSLayoutConstraints

将右对齐约束添加到以编程方式添加的子视图