UILabel NSTextAlignmentRight 不起作用?

Posted

技术标签:

【中文标题】UILabel NSTextAlignmentRight 不起作用?【英文标题】:UILabel NSTextAlignmentRight not working? 【发布时间】:2015-10-27 14:29:42 【问题描述】:

我的文本右对齐有问题。实际上在我的DetailedViewController 中有UILabel 称为"lblnNewsTitle",对于这个标签,我正在尝试设置 NSTextAlignmentRight 但它对我不起作用。谁能帮我解决这个问题?

屏幕截图 1:

屏幕截图 2:

我的故事板截图 3:

这是我的代码:

   - (void)viewDidLoad

    

        [DetailTittle setFont:[UIFont fontWithName:@"GEEast-ExtraBold" size:12]];
        [super viewDidLoad];

        [self.lblDescription setNumberOfLines:0];

        [scrollView setScrollEnabled:YES];
        [scrollView setContentSize:CGSizeMake(320, 765)];
        self.txtViwNews.text=self.strDescription;
        self.lblnNewsTitle.text=self.strTitle;
        self.lblnNewsTitle.font=[UIFont fontWithName:@"GEEast-ExtraBold" size:14];
        self.txtViwNews.font=[UIFont fontWithName:@"GE SS Unique" size:12];

        self.lblnNewsTitle.textAlignment = NSTextAlignmentRight;

        self.txtViwNews.textAlignment= NSTextAlignmentRight;

        self.lblDateinDetail.text=self.strDate;
        self.lblDateinDetail.font=[UIFont fontWithName:@"GEEast-ExtraBold" size:14];
        self.lblDateinDetail.textColor=[UIColor blackColor];

        [lblnNewsTitle setNumberOfLines:0];
        [lblnNewsTitle sizeToFit];


        NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:self.strDetailImage]];
        self.strImage.image = [UIImage imageWithData:data];
        // Set border color and width of image
        [_strImage.layer setBorderColor:[UIColor blackColor].CGColor];
        [_strImage.layer setBorderWidth:1.0];
        self.lblDescription.font=[UIFont fontWithName:@"GE SS Unique" size:kLblIntalFont];
        self.lblDescription.textAlignment = NSTextAlignmentRight;
        [self estimatedHeight:kLblIntalFont];

        if (_strImage.image == nil)
        
            [_strImage.layer setBorderColor:[UIColor blackColor].CGColor];
            [_strImage.layer setBorderWidth:0];

            [self.lblnNewsTitle setNumberOfLines:0];
            self.lblnNewsTitle.frame = CGRectMake(self.lblnNewsTitle.frame.origin.x, self.lblnNewsTitle.frame.origin.y, self.lblnNewsTitle.frame.size.width, self.lblnNewsTitle.frame.size.height );

self.viwMidImage.frame=CGRectMake(self.viwMidImage.frame.origin.x, self.strImage.frame.origin.y, self.viwMidImage.frame.size.width, self.viwMidImage.frame.size.height);
            [self.lblDescription setNumberOfLines:0];
            [self.lblDescription sizeToFit];
            self.lblDescription.frame = CGRectMake(self.lblDescription.frame.origin.x, self.viwMidImage.frame.origin.y+  self.viwMidImage.frame.size.height,self.lblDescription.frame.size.width,self.lblDescription.frame.size.height );
            self.lblDescription.textAlignment = NSTextAlignmentRight;
               
        else 

            //  if (!cell.imgNews ==nil)
            self.lblnNewsTitle.frame = CGRectMake(self.lblnNewsTitle.frame.origin.x, self.lblnNewsTitle.frame.origin.y, self.lblnNewsTitle.frame.size.width, self.lblnNewsTitle.frame.size.height );
            [self.lblDescription setNumberOfLines:0];
            [self.lblDescription sizeToFit];

            

    

【问题讨论】:

【参考方案1】:

直接在你的Attribute Inspector中添加NSTextAlignmentRight,同时删除[lblnNewsTitle sizeToFit];并检查

试试这个

【讨论】:

@user3744932 - 祝你有美好的一天,我的兄弟【参考方案2】:

来自文档:

- sizeToFit

调整并移动接收者的内容视图,使其仅包含其 子视图。

您应该在以下情况下调用此方法:

添加子视图(到内容视图)

更改此类子视图的大小或位置

设置内容视图的边距

因此,如果您在任何对齐方式下执行 sizeTofit,则文本将仅向左对齐。要解决这个问题:

您可以将原始标签的宽度保存在一个变量中并在 sizeToFit 之后设置它,或者给它一个固定宽度来解决这些问题:

如果您仍想使用 sizeToFit,请执行以下操作:

myLabel.textAlignment = NSTextAlignmentRight;

    [myLabel setNumberOfLines:0];
    [myLabel sizeToFit];

    CGRect myFrame = myLabel.frame;
    // Resize the frame's width to your requirement)
    // width could also be myOriginalLabelFrame.size.width
    myFrame = CGRectMake(myFrame.origin.x, myFrame.origin.y, myWidth, myFrame.size.height);
    myLabel.frame = myFrame;

你可以找到更多有用的信息here

【讨论】:

以上是关于UILabel NSTextAlignmentRight 不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

UIAlertController 或 UITextField 中的 UILabel 类似 UILabel

UILabel

ios6--UILabel

如何调整 UIView 的大小以获取大量 UILabel 并调整 UILabel 的大小以适合文本?

自动调整 UILabel 文本大小以适应 UILabel 宽度

IOS开发调整UILabel的行间距