gpt4 book ai didi

ios - 如何使用 UIView 和自动布局绘制水平线?

转载 作者:行者123 更新时间:2023-12-01 16:33:50 25 4
gpt4 key购买 nike

这是我的代码......这是一个简单的问题......也许我不应该用 UIView 来做......但我只想画一条装饰性的水平线来分隔内容。我得到的是没有错误,这条线只是没有画出来。如果我用一个框架初始化它并关闭自动布局,那么我确实看到了这条线,但这不是我想要实现它的方式,因为一切都是自动布局。

在 viewDidLoad 下面调用其他方法来创建 UI 元素并添加约束。

- (void)viewDidLoad {
[super viewDidLoad];

// Add main layout
[self.scrollView addSubview:self.profileInfoContainer];

// Add UI elements
[self.profileInfoContainer addSubview:self.email];
[self.profileInfoContainer addSubview:self.userName];
[self.profileInfoContainer addSubview:self.hLineSeperator];
[self.profileInfoContainer addSubview:self.navigationContainer];

// Add Constraints
[self addInfoContainerConst];

}

下面我为 profileInfoContainer 中的所有 ui 元素添加约束,包括 hLineSeperator
- (void)addInfoContainerConst {

// Add constrains
NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(_userName, _email, _hLineSeperator, _navigationContainer);
NSDictionary *metrics = @{
@"vTop":@60,
@"vBttm":@5,
@"hLeft":@25,
@"hRight":@25,
@"vMiddle":@5
};

NSArray *constraint_POS_V = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-vTop-[_userName]-vMiddle-[_email]-vMiddle-[_hLineSeperator]-vMiddle-[_navigationContainer]|"
options:0
metrics:metrics
views:viewsDictionary];

NSArray *constraint_POS_H = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-hLeft-[_userName]-hRight-|"
options:0
metrics:metrics
views:viewsDictionary];

NSArray *constraint_POS_H_1 = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-hLeft-[_email]-hRight-|"
options:0
metrics:metrics
views:viewsDictionary];

NSArray *constraint_POS_H_2 = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[_hLineSeperator(1)]|"
options:0
metrics:metrics
views:viewsDictionary];

NSArray *constraint_POS_H_3 = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[_navigationContainer]|"
options:0
metrics:metrics
views:viewsDictionary];

[self.profileInfoContainer addConstraints:constraint_POS_V];
[self.profileInfoContainer addConstraints:constraint_POS_H];
[self.profileInfoContainer addConstraints:constraint_POS_H_1];
[self.profileInfoContainer addConstraints:constraint_POS_H_2];
[self.profileInfoContainer addConstraints:constraint_POS_H_3];
}

下面是创建用于绘制线条的 UIView 的方法
    - (UIView*)hLineSeperator {
if (!_hLineSeperator) {
_hLineSeperator = [UIView new];
_hLineSeperator.translatesAutoresizingMaskIntoConstraints = NO;
_hLineSeperator.backgroundColor = [UIColor grayColor];
}
return _hLineSeperator;
}

最佳答案

不需要为在代码中创建的 subview (特别是您想要创建的 subview )添加约束。你可以这样做,

UIView *horizontalSeperatorViewOnTop = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.(yourView).frame.size.width, 0.5f)];
horizontalSeperatorViewTop.backgroundColor = [UIColor lightGrayColor];
[self.(yourView) addSubview: horizontalSeperatorViewOnTop];

我一直在我的代码中对水平或垂直分隔符执行此操作,效果很好!

关于ios - 如何使用 UIView 和自动布局绘制水平线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29977547/

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