以编程方式分配的 UIView 未在我给出的 x 和 y 处分配。超越这一点。
Posted
技术标签:
【中文标题】以编程方式分配的 UIView 未在我给出的 x 和 y 处分配。超越这一点。【英文标题】:UIView allocated programmatically not allocated at the x and y i have given. Going beyond that. 【发布时间】:2013-06-10 05:35:45 【问题描述】:大家好,我以编程方式分配了 UIView,比如,
detailView = [[UIView alloc] initWithFrame:CGRectMake(50, 100, 200, 200)];
detailView.alpha = 0.95;
detailView.layer.cornerRadius = 10;
detailView.layer.borderColor = [UIColor blackColor].CGColor;
detailView.layer.borderWidth = 1;
[distributorView addSubview:detailView];
然后我以编程方式在此视图上添加了一些标签,例如,
arnNoDtlViewLbl = [[UILabel alloc] initWithFrame:CGRectMake(55,110,190,25)];
arnNoDtlViewLbl.text = [NSString stringWithFormat:@"%@",[brdArnNoAry objectAtIndex:rowOfTheCell]];
[arnNoDtlViewLbl setFont:[UIFont fontWithName:@"Verdana" size:13]];
arnNoDtlViewLbl.textColor = [UIColor darkGrayColor];
arnNoDtlViewLbl.numberOfLines=1;
[arnNoDtlViewLbl setBackgroundColor:[UIColor clearColor]];
[detailView addSubview:arnNoDtlViewLbl];
有这么六个标签,还有一个关闭按钮可以关闭视图, 如果我将角 redius 设置为该视图会发生什么,该视图似乎在正确的位置,就像我给出的坐标一样,但是如果我删除角 redius,视图及其内容意味着标签和所有内容,将超出坐标我给了他们,,,
这是视图,它的样子,整个代码是here,
【问题讨论】:
detailView.layer.masksToBounds = YES; arnNoDtlViewLbl 的来源为 55,110。您是否了解该框架原点在其父视图坐标系中说明?换句话说,图像“ARN-1221”中显示的第一个标签正是我期望的位置,在 200 px 父视图下大约 1/2 (110 px)。 我的第一个问题是什么是distributorView?将 subView.frame.origin.x 的所有子视图设置为 5 而不是 55。 请将您的 arnNoDtlViewLbl 框架更改为 arnNoDtlViewLbl = [[UILabel alloc] initWithFrame:CGRectMake(10,10,190,25)];然后尝试 【参考方案1】:当你添加一个子视图时,它会参考它的父视图坐标。
如果我有view A -> view B - > View c
(0,0)
在视图 A 的左上角
视图 C 的框架原点 (0,0)
在视图 B 的左上角,依此类推
开
所以
arnNoDtlViewLbl = [[UILabel alloc] initWithFrame:CGRectMake(0,0,190,25)];
arnNoDtlViewLbl.text = [NSString stringWithFormat:@"%@",[brdArnNoAry objectAtIndex:rowOfTheCell]];
[arnNoDtlViewLbl setFont:[UIFont fontWithName:@"Verdana" size:13]];
arnNoDtlViewLbl.textColor = [UIColor darkGrayColor];
arnNoDtlViewLbl.numberOfLines=1;
[arnNoDtlViewLbl setBackgroundColor:[UIColor clearColor]];
[detailView addSubview:arnNoDtlViewLbl];
将为您完成这项工作
【讨论】:
感谢您的协调,先生,在 ishhhh 对问题的评论的帮助下,我已经纠正了我的错误.. 和您说的一样。【参考方案2】:您可能必须阅读文档或 Frame 和 Bound's 之间的区别并相应地使用它们。
【讨论】:
以上是关于以编程方式分配的 UIView 未在我给出的 x 和 y 处分配。超越这一点。的主要内容,如果未能解决你的问题,请参考以下文章