我正在尝试在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) ;
答案 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属性中的值是未定义的,应该是 忽略。
因此,如果您没有看到自己的期望,请将您的观看次数frame
与CGAffineTransformIdentity
进行比较。