gpt4 book ai didi

ios - 带有自动布局的 iOS 中的垂直进度条

转载 作者:行者123 更新时间:2023-11-29 02:20:00 25 4
gpt4 key购买 nike

我正在尝试在 iOS 中制作一个垂直进度条,可以将其作为 UIView 放置在界面生成器中,并给出一个进度条 View 类。这是我的类文件:

进度条.h:

@interface ProgressBar : UIView
@property (nonatomic, retain) IBOutlet UIView *barView
-(void)setBarValue:(float)value;
@end

进度条.m:

-(id)initWithCoder:(NSCoder *)aDecoder {
id s = [super initWithCoder:aDecoder];
if (s) {
self.backgroundColor = [UIColor clearColor];
}
return s;
}

-(void)setBarValue:(float)val {
[self.barView setBackgroudnColor:TURQUOISE];
CGRect frame = self.barView.frame;
frame.size.height = self.barview.frame.size.height * val;
[self.barView setFrame:frame];
}

我对 ProgressBar 元素内的“barView”的唯一约束是“对齐底部边缘”。 setFrame 方法似乎永远不会更新栏,即使处于全高,内部 self.barView 也与 ProgressBar View 的高度不同。这些属性都在 Storyboard 中正确链接。

enter image description here

有什么想法吗?

最佳答案

关键问题是,如果使用自动布局,您也应该在 IB 中为该 subview 添加约束。 (我假设您已经为 ProgressView 添加了约束。)并且您不应该更改 barView 的 frame,而是更改其约束然后调用 setNeedsLayout。最简单的方法是添加零的前导/尾随/顶部约束,然后创建最终高度约束。然后,您可以为该高度限制添加一个 IBOutlet。然后您可以以编程方式设置该约束的 constant(如果您要使用乘法因子,它应该是该因子和整体进度 View 的乘积,而不是栏的因子, 本身),然后调用 setNeedsLayout

关于ios - 带有自动布局的 iOS 中的垂直进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28263619/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com