2010-06-14 120 views
5

我有一个奇怪的问题,使用UIButtons,类型custom。我将这些按钮中的4个放在UIScrollview上,使用CGAffineTransform以随机角度旋转每个按钮。现在看来,按钮本身会根据旋转角度更改大小。CGAffineTransform:旋转UIButton调整按钮图像

UIGraphicsBeginImageContext(tempCtxSize); 
[cookbookImage drawInRect:CGRectMake(imgOffsetX, imgOffsetY+frmOffsetY, cookbookImage.size.width, cookbookImage.size.height)]; 
[cookbookFrame drawInRect:CGRectMake(0.0f, frmOffsetY, cookbookFrame.size.width, cookbookFrame.size.height)]; 
UIImage *combinedImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

… 

UIButton *cookbookViewButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[cookbookViewButton setFrame:CGRectMake(0.0f, 0.0f, combinedImage.size.width, combinedImage.size.height)]; 

[cookbookViewButton setBackgroundColor:[UIColor clearColor]]; 
[cookbookViewButton setBackgroundImage:combinedImage forState:UIControlStateNormal]; 

CGAffineTransform rotation = [cookbookViewButton transform]; 
rotation = CGAffineTransformRotate(rotation, angle); // some random angle 
[cookbookViewButton setTransform:rotation]; 

回答

0

不要设置cookbookViewButton的框架 - 设置边界。

2

这是一个系统错误: “Important如果视图的transform属性不包含标识转换,那么该视图的框架是未定义的,其自动执行行为的结果也是如此。

从:Handling Layout Changes Automatically Using Autoresizing Rules

解决方案:设置父视图的autoResizeSubviews为NO。

parentView.autoresizesSubviews = NO;