获取创建的子视图ios的动态坐标

时间:2014-10-29 22:09:28

标签: ios objective-c cgrect cgrectmake

我创建了一个基于输入大小创建子视图的方法,因此没有定义的和默认的角CGRect值。我想创建一个位于每个子视图左上角的dismiss按钮。目前我正在使用此方法添加它,但问题是CGRectMake的值不能是静态的。

CGRect tapToDismissFrame = CGRectMake(50.0f, 50.0f, 400.0f, 400.0f);

UIButton *tapToDismiss = [[UIButton alloc] initWithFrame:tapToDismissFrame];
tapToDismiss.backgroundColor = [UIColor clearColor];
tapToDismiss.titleLabel.font = [UIFont fontWithName:[NSString stringWithFormat:@"Helvetica-Bold"] size:20];
[tapToDismiss setTitle:@"⊗" forState:UIControlStateNormal];
[tapToDismiss setTitleColor:[UIColor colorWithRed:173.0/255.0 green:36.0/255.0  blue:36.0/255.0  alpha:1.0] forState:UIControlStateNormal];
[tapToDismiss addTarget:self action:@selector(tapToDismissClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.maskView addSubview:tapToDismiss];

如何获取动态值以便在左上角或右上角创建它。

1 个答案:

答案 0 :(得分:0)

您应该使用CGGeometry函数计算关闭按钮的正确帧。假设您创建了该按钮。在此之后,这里是一个示例代码:

[button sizeToFit];
CGRect maskViewBounds = self.maskView.bounds;
CGFloat top = CGRectGetMinY(maskViewBounds);
CGRect left = CGRectGetMaxX(maskViewBounds);
CGFloat buttonHeight = button.size.height;
CGFloat buttonWidth = button.size.width;
CGFloat topMargin = 5.0f;
CGFloat leftMargin = 5.0f;
CGPoint buttonCenter = CGPointMake(top + buttonHeight / 2.0 + topMargin, left - buttonWidth / 2.0 - leftMargin);
button.center = buttonCenter;

注意:我没有在Xcode中编写此代码。因此可能存在类型错误。