将NSTextAlignmentRight添加到UILabel时,广告间距是否正确?

时间:2017-04-04 06:59:08

标签: ios objective-c xcode uilabel

我将NSTextAlignmentRight添加到UILabel。我也给了UILabel边界。现在问题是右边没有填充。

self.lblColumnCaption.textAlignment = NSTextAlignmentRight;

enter image description here

请建议我如何向右边添加间距?

3 个答案:

答案 0 :(得分:0)

有很多解决方案,但简单易用的方法是在文本之后放置一些空格。如果您不想这样,请尝试以下解决方案,

  1. 只需将没有背景设置的UILabel添加到具有背景设置的UIView。设置标签的宽度,比10小 bg视图的宽度。

    UIView* bg = [[UIView alloc]initWithFrame:CGRectMake(0, 0, self.frame.size.width, 70)];
    //give border and corner radius for the bg view if you want
    UILabel* yourLabel = [[UILabel alloc]initWithFrame:CGRectMake(x, y, yourWidth-10, yourHeight)];
    [bg addSubview:yourLabel];
    
    [self addSubview:bg];
    
  2. 或者,您可以通过初始化UILabel来解决此问题 使用自定义框架。

    CGRect initialFrame = CGRectMake(0, 0, 100, 100); 
    UIEdgeInsets contentInsets = UIEdgeInsetsMake(0, 0, 0, 10); 
    CGRect paddedFrame = UIEdgeInsetsInsetRect(initialFrame, contentInsets); self.label = 
    [[UILabel alloc] initWithFrame:paddedFrame];
    

答案 1 :(得分:0)

正如其他答案中所提到的,最好的方法是继承UILabel并覆盖drawTextInRect方法。

如果你真的不想覆盖,可以使用NSAttributedString在设置textAlignment到NSTextAlignmentRight之前添加正确的填充(tailIndent属性)。

CGFloat rightPadding = 5.0f;
NSString *dateString = @"Your Date";

NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
style.tailIndent = -rightPadding;

NSDictionary *attributes = @{NSParagraphStyleAttributeName: style};

label.attributedText = [[NSAttributedString alloc] initWithString:dateString attributes:attributes];
label.textAlignment = NSTextAlignmentRight;

答案 2 :(得分:0)

使用这段简单的代码

txtFullName.layer.sublayerTransform = CATransform3DMakeTranslation(35, 0, 0);//acc to your situation