将UIView粘贴到父UIView的底部

时间:2014-04-17 16:35:52

标签: ios objective-c ios7

我创建了一些视图

self.customView.frame = CGRect...;

添加子视图并更改框架。

这项工作正如我所料。 (UIView坚持到底)

UIView *bottomSeparatorView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, -1.0f, CGRectGetWidth(view.frame), 1.0f)];
bottomSeparatorView.backgroundColor = DEFAULT_COLOR_PLACEHOLDER;
bottomSeparatorView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleTopMargin;
[view addSubview:bottomSeparatorView];

但这不起作用。 (UIView离开/隐藏)

UIView *bottomSeparatorView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, -0.5f, CGRectGetWidth(view.frame), 0.5f)];
bottomSeparatorView.backgroundColor = DEFAULT_COLOR_PLACEHOLDER;
bottomSeparatorView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleTopMargin;
[view addSubview:bottomSeparatorView];
在调整customView:

之前

bottomSeparatorView框架

{{0, -0.5}, {0, 0.5}} // 1px
{{0, -1}, {0, 1}} // 2px

后:

{{0, 99}, {320, 0}} // 1px
{{0, 99}, {320, 1}} // 2px

1 个答案:

答案 0 :(得分:0)

如果您确实希望它位于底部,则需要将底部分隔符框架的y值更改为view.bounds.size.height-0.5f。如果我错了,请纠正我,但我认为你正试图获得真正的1px水平线。我不是百分之百确定这一点,但您可能会在非视网膜显示设备上使用0.5f高度遇到问题。为了安全起见,您可以首先使用设备scale属性来定义高度,如下所示:

float height = 1/[[UIScreen mainScreen]scale];

UIView *bottomSeparatorView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, view.bounds.size.height-height, CGRectGetWidth(view.frame), height)];
bottomSeparatorView.backgroundColor = DEFAULT_COLOR_PLACEHOLDER;
bottomSeparatorView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleTopMargin;
[view addSubview:bottomSeparatorView];