So ändern Sie die Größe von UIView bei CGAffineTransformIdentity

Ich mache eine App, die eine Funktion zum Drehen und Ändern der Größe einer Ansicht hat. Ich habe diese Funktion implementiert, aber ich habe ein Problem.

Mein Problem

Die Größe der Ansicht wird beim Ziehen der vier Ecken geändert. Nach dem Ändern der Größe kann die Ansicht in beide Richtungen gedreht werden.

Wenn ich nach Abschluss der Drehung erneut versuche, die Größe der Ansicht durch Ziehen der Ecke zu ändern, ändert sich die Größe der Ansicht auf einen unvorhersehbaren Wert und sie bewegt sich über den gesamten Bildschirm.

Ich habe viel gegoogelt und schließlich habe ich die folgende Lösung

The frame property is undefined when transform != CGAffineTransformIdentity, as per the docs on UIView

Ich habe eine App gesehen, die genau das implementiert hat, was ich implementieren möchte.

Wie kann ich die Größe von UIView nach der Drehung von UIView ändern?

Mein Code für die Größenänderung der Ansicht

Berührt Begonnen

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

   UITouch *touch = [[event allTouches] anyObject];

   NSLog(@"[touch view]:::%@",[touch view]);

   touchStart = [[touches anyObject] locationInView:testVw];
   isResizingLR = (testVw.bounds.size.width - touchStart.x < kResizeThumbSize &&     testVw.bounds.size.height - touchStart.y < kResizeThumbSize);
   isResizingUL = (touchStart.x <kResizeThumbSize && touchStart.y <kResizeThumbSize);
   isResizingUR = (testVw.bounds.size.width-touchStart.x < kResizeThumbSize &&      touchStart.y<kResizeThumbSize);
   isResizingLL = (touchStart.x <kResizeThumbSize && testVw.bounds.size.height -touchStart.y <kResizeThumbSize);    
}

Berührt Verschoben

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
CGPoint touchPoint = [[touches anyObject] locationInView:testVw];
CGPoint previous=[[touches anyObject]previousLocationInView:testVw];

float  deltaWidth = touchPoint.x-previous.x;
float  deltaHeight = touchPoint.y-previous.y;

NSLog(@"CVTM:%@",NSStringFromCGRect(testVw.frame));


if (isResizingLR) {
 testVw.frame = CGRectMake(testVw.frame.origin.x, testVw.frame.origin.y,touchPoint.x +   deltaWidth, touchPoint.y + deltaWidth);
 }  
if (isResizingUL) {
 testVw.frame = CGRectMake(testVw.frame.origin.x + deltaWidth, testVw.frame.origin.y +  deltaHeight, testVw.frame.size.width - deltaWidth, testVw.frame.size.height - deltaHeight);
 } 
if (isResizingUR) {
  testVw.frame = CGRectMake(testVw.frame.origin.x ,testVw.frame.origin.y + deltaHeight,  testVw.frame.size.width + deltaWidth, testVw.frame.size.height - deltaHeight);      
 } 
if (isResizingLL) {
 testVw.frame = CGRectMake(testVw.frame.origin.x + deltaWidth ,testVw.frame.origin.y ,  testVw.frame.size.width - deltaWidth, testVw.frame.size.height + deltaHeight);   
}

if (!isResizingUL && !isResizingLR && !isResizingUR && !isResizingLL) {
testVw.center = CGPointMake(testVw.center.x + touchPoint.x - touchStart.x,testVw.center.y + touchPoint.y - touchStart.y);
 }

 }

Antworten auf die Frage(1)

Ihre Antwort auf die Frage