我做了一个自定义UITextfield
并在UIToolbar
.
然后在initWithFrame
自定义UITextField
之后[super initWithFrame:frame]
我尝试UITextField
在窗口中获取自定义的原点 X。但我试过了
self.frame.origin.x
self.bounds.origin.x
self.superview.frame.origin.x,
self.superview.bounds.origin.x,
CGPoint point = [self.superview convertPoint:self.frame.origin toView:nil]; return point.x;
CGPoint point = [self.superview convertPoint:self.frame.origin fromView:self]; return point.x;
CGPoint point = [self convertPoint:CGPointZero toView:[UIApplication sharedApplication].keyWindow]; return point.x
并且它们都返回 0.0。
但在窗口中,UITextField
实际上是在中间的某个地方UIToolbar
。如何获得自定义的原点 x UITextField
?
我的代码:
self = [super initWithFrame:frame];
if (self) {
originalHeight = self.bounds.size.height;
originalWidth = self.bounds.size.width;
[self createTableView];
}
return self;
- (void)createTableView
{
self.tableView = [[UITableView alloc] init];
LogDebug(@"Origin x = %f", self.frame.origin.x);
self.tableView.frame = CGRectMake(self.frame.origin.x, originalHeight + 18, originalWidth, 320);
}
编辑:
我想出了解决方案,但仍然不知道这个问题背后的原因,但如果有人可以扩展这个主题,我将不胜感激。
在上面的代码中,我尝试在初始化期间打印出我的自定义 UIView 的原始 X。似乎该应用程序不知道我的自定义 UIView 的原始点的信息。
我想在这条线之后
self = [super initWithFrame:frame]
我可以得到自定义UIView的原始点信息但是我错了。
我也发现
self.frame.origin.x
具有相同的效果
[[UIApplication sharedApplication].keyWindow convertPoint:self.bounds.origin fromView:self].x;