当字符长度发生变化时,保持 UILabel 在 UIView 中居中。 iOS,目标 C
Posted
技术标签:
【中文标题】当字符长度发生变化时,保持 UILabel 在 UIView 中居中。 iOS,目标 C【英文标题】:Keep UILabel centered in UIView when character lengths change. iOS, Objective C 【发布时间】:2014-03-13 12:38:59 【问题描述】:我有一个UILabel
,它位于屏幕中间。数值最多可以包含三位数字。例如 500。
我的问题是,当值发生变化时,它会使UILabel
位置偏离中心。
在下图中,您将看到当值等于 3 位时,滑块标签看起来居中,而当滑块标签值为 12 时,标签看起来偏离中心。
我需要 UILabel
将自身调整为始终位于 UIView
的中心。
我尝试将下面的代码添加到我的UILabel
,但没有成功。
self.myCircleSliderValueLabel.font = sliderValueFont;
self.myCircleSliderValueLabel.textColor = [UIColor colorWithRed:103/255.0 green:187/255.0 blue:230/255.0 alpha:1.0];;
self.myCircleSliderValueLabel.numberOfLines = 0;
self.myCircleSliderValueLabel.lineBreakMode = NSLineBreakByWordWrapping;
self.myCircleSliderValueLabel.text = @"400";
[self.myCircleSlider addSubview:self.myCircleSliderValueLabel];
self.myCircleSliderValueLabel.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;
【问题讨论】:
设置自动布局约束以使标签居中,然后在更新文本时调用 sizeToFit。然后标签应该居中。 【参考方案1】:最简单、最快的方法是为您的myCircleSliderValueLabel
设置固定宽度(以容纳所有三个数字)并将textAlignment
属性设置为NSTextAlignmentCenter
。
已编辑:
或者您可以使用自动布局。像这样的......
NSLayoutConstraint *con = [NSLayoutConstraint
constrainWithItem:self.myCircleSliderValueLabel
attribute:NSLayoutAttributeCenterX // It says that X center
relatedBy:NSLayoutRelationEqual // Should equal
toItem:self.myCircleSliderValueLabel.superview // To your label superview's...
attribute:NSLayoutAttributeCenterX // ... X center
multiplier:1.0
constant:0.0];
【讨论】:
【参考方案2】:你试过 textAlignment = NSTextAlignmentCenter 吗?
【讨论】:
这更像是评论而不是答案以上是关于当字符长度发生变化时,保持 UILabel 在 UIView 中居中。 iOS,目标 C的主要内容,如果未能解决你的问题,请参考以下文章
Autolayout UILabel 高度在第二个视图外观上发生变化
带有 UILabel 内容的 UITableViewCell 在滚动时发生变化
当 graphql 变量的状态发生变化时,react-native 上的结果保持不变