2010-06-14 4 views
5

J'ai un problème étrange en utilisant UIButtons, tapez custom. Je place 4 de ces boutons sur un UIScrollview, en faisant tourner chaque bouton d'un angle aléatoire en utilisant CGAffineTransform. Maintenant, il semble que les boutons eux-mêmes changent de taille en fonction de l'angle de rotation. Ne pas définir le cadre de cookbookViewButton - définissez les limites.CGAffineTransform: rotation sur UIButton redimensionne l'image du bouton

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]; 

Répondre

2

Il s'agit d'un bogue système: "Important Si la propriété de transformation d'une vue ne contient pas la transformation d'identité, le cadre de cette vue est indéfini et les résultats de ses comportements d'autoresalisation sont également définis." réglé sur NO de autoResizeSubviews de la vue parent:

de: Handling Layout Changes Automatically Using Autoresizing Rules

Solution.

parentView.autoresizesSubviews = NO; 
Questions connexes