UIButton origin.y返回错误的值

时间:2017-10-01 20:48:22

标签: ios objective-c

我正在尝试在ViewDidAppear中检索类的rect值。该按钮位于UITableViewCell。除frame.origin.y之外,所有值都返回正确。它返回-1.5。我想知道是什么原因引起的。

CGRect customRect = CGRectMake(self.favoriteButton.frame.origin.x, self.favoriteButton.frame.origin.y, self.favoriteButton.frame.size.height, self.favoriteButton.frame.size.width) ;

3 个答案:

答案 0 :(得分:0)

有两件事

1-)你说它在TableViewCell中,所以返回正确。因为您将按钮放在视图中(TableViewVell容器视图),所以按钮从容器视图获取坐标而不是从superview获取坐标。

2-)如果TableViewCell足够大并且从y = 0开始并且您确定它是错误的并且必须类似于400.尝试获取viewDidLayoutSubviews处的矩形值

答案 1 :(得分:0)

Origin.y以非直观的方式定义。

首先,向下移动是正向的,向上移动是负向的(更大的数字意味着视图在屏幕上显得更低)。

其次,原点是相对于直接父视图的左上角(在您的情况下是单元格)。如果origin.y真的是-1.5那么你的按钮顶部只比表格视图单元顶部高出一个半点(听起来很可能)。如果你的origin.y真的应该是400点,这意味着它出现在你的UITableViewCell你的tableViewCell必须超过400点。

可能是这种情况,但我想知道你所寻找的东西是不是origin.y,但是在根视图的顶部(你的视图控制器中的self.view)下方的距离是多少是。如果是这样,试试:

CGPoint originInRootview = [self.view convertPoint:CGPointZero fromView:self.favoriteButton];
CGFloat theNumberIThinkYouWant = originInRootview.y

答案 2 :(得分:0)

  

除frame.origin.y外,所有值都返回正确。它返回-1.5。我想知道是什么原因引起的。

将变换应用于视图会导致其<android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="5dp" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 属性无效。来自documentation for UIView's frame property

  

警告

     

当此属性的值不是标识时   变换,frame属性中的值是未定义的,应该是   忽略。

因此,如果您没有看到自己的期望,请将您的观看次数frameCGAffineTransformIdentity进行比较。