Ermitteln Sie, ob Crop Rect vollständig in gedrehtem UIView enthalten ist.
Premise: Ich erstelle ein Beschneidungswerkzeug, das die willkürliche Drehung eines Bildes mit zwei Fingern sowie das willkürliche Beschneiden handhabt.
Manchmal wird das Bild so gedreht, dass ein leerer Bereich eingefügt wird, um eine Lücke zwischen dem gedrehten Bild und dem Freistellungsrechteck zu füllen (siehe die folgenden Beispiele).
Ich muss sicherstellen, dass die Bildansicht beim Drehen vollständig in das Zuschneiderechteck passt. Wenn nicht, muss ich das Bild neu transformieren (zoomen), damit es in die Zuschnittsgrenzen passt.
Usingdiese Antwort, Ich habe die Möglichkeit implementiert, zu überprüfen, ob eine gedrehte UIImageView das Cropping-CGRect schneidet, aber das sagt mir leider nicht, ob das Cropping-Rect @ isvollständi in der gedrehten Bildansicht enthalten. Hoffen Sie, dass ich einige einfache Änderungen an dieser Antwort vornehmen kann?
Ein visuelles Beispiel für OK:
und nicht OK, das, was ich erkennen und behandeln muss:
Aktualisieren nicht funktionierende Methode
- (BOOL)rotatedView:(UIView*)rotatedView containsViewCompletely:(UIView*)containedView {
CGRect rotatedBounds = rotatedView.bounds;
CGPoint polyContainedView[4];
polyContainedView[0] = [containedView convertPoint:rotatedBounds.origin toView:rotatedView];
polyContainedView[1] = [containedView convertPoint:CGPointMake(rotatedBounds.origin.x + rotatedBounds.size.width, rotatedBounds.origin.y) toView:rotatedView];
polyContainedView[2] = [containedView convertPoint:CGPointMake(rotatedBounds.origin.x + rotatedBounds.size.width, rotatedBounds.origin.y + rotatedBounds.size.height) toView:rotatedView];
polyContainedView[3] = [containedView convertPoint:CGPointMake(rotatedBounds.origin.x, rotatedBounds.origin.y + rotatedBounds.size.height) toView:rotatedView];
if (CGRectContainsPoint(rotatedView.bounds, polyContainedView[0]) &&
CGRectContainsPoint(rotatedView.bounds, polyContainedView[1]) &&
CGRectContainsPoint(rotatedView.bounds, polyContainedView[2]) &&
CGRectContainsPoint(rotatedView.bounds, polyContainedView[3]))
return YES;
else
return NO;
}