我目前遇到一个初学者问题。我有一个UIView
,其中显示了一些价格。我想让UIView
的宽度根据价格动态变化,如果是1欧元,宽度将为20pt,如果是2300欧元,则宽度将为50pt。
我尝试使用故事板的约束条件但没有成功。在故事板中是否有可能实现,还是我必须计算UILabel
的宽度,然后以编程方式设置UIView
的宽度?
提前致谢。
我目前遇到一个初学者问题。我有一个UIView
,其中显示了一些价格。我想让UIView
的宽度根据价格动态变化,如果是1欧元,宽度将为20pt,如果是2300欧元,则宽度将为50pt。
我尝试使用故事板的约束条件但没有成功。在故事板中是否有可能实现,还是我必须计算UILabel
的宽度,然后以编程方式设置UIView
的宽度?
提前致谢。
是的,您可以在Storyboard中完成这项任务。 向视图添加标签并将其固定在左右边缘(如果需要,也可以将其固定在顶部和底部)。 让视图在x和y方向上有与其父视图的约束,但不要给它宽度约束(如果您没有将标签的顶部和底部固定在其上,则需要高度约束)。 视图应该根据其内容扩展标签。
@interface SurroundView : UIView
@property (strong, nonatomic) NSString *text;
@end
SurroundView.m
@interface SurroundView()
@property (weak, nonatomic) IBOutlet UILabel *childLabel;
@end
@implementation SurroundView
- (void)setText:(NSString *)text
{
self.childLabel.text = text;
[self invalidateIntrinsicContentSize];
}
- (NSString *)text
{
return( self.childLabel.text );
}
- (CGSize)intrinsicContentSize
{
CGSize size = self.childLabel.intrinsicContentSize;
size.height += 16;
size.width += 16;
return( size );
}
@end
IBOutlet用于连接childLabel
可能有些棘手,下面是具体步骤:
SurroundView
SurroundView
的子视图SurroundView.m
现在还需要正确设置约束。标签的约束应该如下图所示
SurroundView
的约束应如下所示。关键点是将Intrinsic Size设置为Placeholder以避免缺少约束的警告。
将标签放置在视图内,并将其顶部、底部、右侧和左侧固定到标签的父视图上。请注意,您不需要指定宽度约束。现在,向视图添加高度和宽度约束。创建一个到宽度约束的outlet,在价格更改时将视图的宽度约束常数设置为所需值。由于标签被固定在视图上,因此它也会扩展。