旋转后修改UIView的高度和宽度

时间:2014-04-02 12:26:13

标签: ios objective-c uiview

我有一个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的起源也在发生变化。有什么办法可以只从一端扩展宽度吗?

2 个答案:

答案 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);