我有一个UIView,它作为子视图添加到我的视图控制器。我想将UIView旋转到任意角度,然后修改视图的宽度和高度。我有一个UITextField和按钮来设置角度。
-(void) setAngle: (UIButton *) sender
{
angle = [myText.text floatValue];
angle *= (M_PI)/180.0;
self.transform = CGAffineTransformMakeRotation(angle);
}
两个UISliders相应地修改高度和宽度。
-(void)sliderAction1:(id)sender
{
w = (CGFloat)slider1.value;
CGRect myRect= CGRectMake(x, y, w, h);
self.bounds = myRect;
}
-(void)sliderAction2:(id)sender
{
h = (CGFloat)slider2.value;
CGRect myRect= CGRectMake(x, y, w, h);
self.bounds = myRect;
}
我完成了我的研究,发现在使用CGAffineTransformMakeRotation()后我无法使用setFrame。 "边界问题"是它从两端修改UIView的宽度和高度。即UIView的起源也在发生变化。有什么办法可以只从一端扩展宽度吗?
答案 0 :(得分:0)
-(void)sliderAction1:(id)sender
{
CGFloat w = (CGFloat)slider1.value;
CGRect myRect= CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y, w, self.view.frame.size.height);
self.view.frame = myRect;
}
它为我工作从一侧改变宽度。变化是非常微小的,因为滑块值在0-1之间,所以如果乘以w乘以100或1000它将反映在主要
在乘法后使用
CGRect myRect= CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y, w*100, self.view.frame.size.height);
答案 1 :(得分:0)
你不应该修改那样的界限。通常,您不会修改bounds属性。
尝试使用
连接转换CGAffineTransformScale(不是CGAffineTransformMakeScale)。使用“Make”可以有效地重置变换矩阵。
CGAffineTransformScale(self.rotationTransform, x, y);