我在UIView中心下面有一个UILabel,边距为20像素。
UIView中心
UIViewCenter + 20
self.tableNameLabel.center = CGPointMake(self.tableView.origin.x + self.tableView.frame.size.width / 2, self.tableView.origin.y + self.tableView.frame.size.height / 2 + (kTableNameMargin/ 2.f));
当我旋转UIView 90度时,我想重新计算这个UILabel的位置,这样UILabel可以保持在相同的位置,在中心下方,具有相同的边距。
问题是当应用旋转时,UILabel会转到另一个位置。例如,当我应用90º时,标签向右移动。出现这种情况的具体原因是什么我知道这个:
警告:如果transform属性不是identity变换,则此属性的值是未定义的,因此应该被忽略。
任何想法我如何解决这个问题,以便UIlabel可以始终保持在中心位置?
答案 0 :(得分:0)
不是自己设置和计算中心,为什么不使用自动布局?在自动布局中,您可以将标签的中心与其父视图的中心对齐。无论何时在父视图上应用任何转换,都将无需重新定位标签。
现在,如果将父视图旋转90度,则标签也将旋转90度。为避免这种情况,您必须将标签旋转270度,如下所示
-(void)rotateBy90
{
self.parentView.transform = CGAffineTransformMakeRotation(M_PI_2); // 90 degress
self.label.transform = CGAffineTransformMakeRotation(M_PI + M_PI_2); //270 degress
}