我想设置一个UILabel的左插图/边距,但找不到这样做的方法。标签有一个背景集,所以仅仅改变它的原点是行不通的。这将是理想的插入文本10px左右在左手边。
当前回答
如果你不想使用一个额外的父视图来设置背景,你可以子类化UILabel并重写textRectForBounds: limitedtonumberolines:。我会添加一个textEdgeInsets属性或类似的,然后做
- (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines
{
return [super textRectForBounds:UIEdgeInsetsInsetRect(bounds,textEdgeInsets) limitedToNumberOfLines:numberOfLines];
}
为了健壮性,你可能还想在setTextEdgeInsets:中调用[self setNeedsDisplay],但我通常不这么做。
其他回答
不要编码,Xcode !
比起使用UILabel来解决这个问题,我建议你去看看UIButton。它提供了开箱即用的功能,可以在大小检查器中设置内容插入(上、左、下、右)。设置所需的边距,然后在Xcode中禁用按钮,完成。
设置标签的textAlignment属性为NSTextAlignmentRight并增加它的宽度。
这是我发现的最简单的方法。这对我来说很有魔力。
UIView *titleSection = [[UIView alloc] initWithFrame:CGRectMake(0, 0, screenWidth, 100)];
[titleSection addSubview:titleSection];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectInset(titleSection.frame, PADDING, 0)];
[titleSection addSubview:label];
我没有在上面的答案中找到使用UIButton的建议。我会试着证明这是一个好的选择。
按钮。contenttedgeinsets = UIEdgeInsets(上:0,左:8,下:0,右:8)
在我的情况下,使用UIButton是最好的解决方案,因为:
我有一个简单的单行文本 我不想使用UIView作为容器UILabel(即,我想简化数学计算的自动布局在我的单元格) 我不想使用NSParagraphStyle(因为tailIndent与自动布局的工作不正确- UILabel的宽度小于预期) 我不想使用UITextView(因为可能的副作用) 我不想子类化UILabel(少代码少bug)
这就是为什么在我的情况下使用UIButton中的contenttedgeinsets成为添加文本边距的最简单方法。
希望这能帮助到一些人。
我认为UILabel类没有设置边距的方法。为什么不把标签的位置设置在需要的位置?
见下面的代码:
UILabel *label = [[UILabel alloc] init];
label.text = @"This is label";
label.frame = CGRectMake(0,0,100,100);
如果来自接口构建器,则按以下方式定位Label:
yourLabel.frame = CGRectMake(0,0,100,100);
推荐文章
- 如何在iOS上进行base64编码?
- 如何停止不必要的UIButton动画标题变化?
- 是否有可能更新一个本地化的故事板的字符串?
- 以编程方式获取Bundle Identifier
- 为iPad和iPhone设计输入按钮
- 如何在我的iPhone应用程序中使用NSError ?
- 我的预发行应用已经在iTunes Connect中“处理”了一周多,这是怎么回事?
- Xcode iOS项目只显示“我的Mac 64位”,但不显示模拟器或设备
- Objective-C中的自动引用计数不能防止或减少什么样的泄漏?
- 在Xcode 9中如何从打开的多个模拟器中退出或关闭单个模拟器?
- 如何使用Swift播放声音?
- UINavigationBar自定义返回按钮没有标题
- 如何精确地以毫秒为单位记录方法的执行时间?
- 在整个UIWindow中获取UIView的位置
- 如何解散ViewController在Swift?