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);
}
}