@@ -340,6 +340,16 @@ - (CGRect)frameForToolbarWithVerticalLayout:(BOOL)verticalLayout
340340        if  (self.toolbarPosition  == TOCropViewControllerToolbarPositionBottom) {
341341            frame.origin .y  = CGRectGetHeight (self.view .bounds ) - (frame.size .height  + insets.bottom );
342342        } else  {
343+             if  (self.titleLabel .text .length ) {
344+                 //  Work out the size of the title label based on the crop view size
345+                 CGRect frame = self.titleLabel .frame ;
346+                 frame.size  = [self .titleLabel sizeThatFits: self .cropView.frame.size];
347+                 self.titleLabel .frame  = frame;
348+ 
349+                 //  Set out the appropriate inset for that
350+                 insets.top  = CGRectGetMaxY (self.titleLabel .frame );
351+                 insets.top  += kTOCropViewControllerTitleTopPadding ;
352+             }
343353            frame.origin .y  = insets.top ;
344354        }
345355    }
@@ -365,27 +375,24 @@ - (CGRect)frameForCropViewWithVerticalLayout:(BOOL)verticalLayout
365375        return  view.bounds ;
366376    }
367377
368-     UIEdgeInsets insets = self.statusBarSafeInsets ;
369- 
370378    CGRect bounds = view.bounds ;
371379    CGRect frame = CGRectZero;
372380
373381    //  Horizontal layout (eg landscape)
374382    if  (!verticalLayout) {
375-         frame.origin .x  = kTOCropViewControllerToolbarHeight  + insets. left ;
383+         frame.origin .x  = CGRectGetMaxX (self. toolbar . frame ) ;
376384        frame.size .width  = CGRectGetWidth (bounds) - frame.origin .x ;
377- 		 frame.size .height  = CGRectGetHeight (bounds);
385+          frame.size .height  = CGRectGetHeight (bounds);
378386    }
379387    else  { //  Vertical layout
380-         frame.size .height  = CGRectGetHeight (bounds);
381388        frame.size .width  = CGRectGetWidth (bounds);
382389
383390        //  Set Y and adjust for height
384-         if  (self.toolbarPosition  == TOCropViewControllerToolbarPositionBottom ) {
385-             frame.size . height  -= (insets. bottom  +  kTOCropViewControllerToolbarHeight );
386-         }  else   if  (self. toolbarPosition  == TOCropViewControllerToolbarPositionTop) { 
387- 			frame. origin . y  =  kTOCropViewControllerToolbarHeight  + insets. top ; 
388-             frame.size .height  -= frame. origin . y ;
391+         if  (self.toolbarPosition  == TOCropViewControllerToolbarPositionTop ) {
392+             frame.origin . y  =  CGRectGetMaxY (self. toolbar . frame );
393+             frame. size . height  =  CGRectGetHeight (bounds) - frame. origin . y ; 
394+         }  else  { 
395+             frame.size .height  =  CGRectGetMinY (self. toolbar . frame ) ;
389396        }
390397    }
391398
@@ -424,40 +431,37 @@ - (void)adjustCropViewInsets
424431            insets.left  = CGRectGetMaxX (self.toolbar .frame );
425432        } else  {
426433            if  (self.toolbarPosition  == TOCropViewControllerToolbarPositionTop) {
427-                 insets.top  = CGRectGetMinY (self.toolbar .frame );
434+                 insets.top  = CGRectGetMaxY (self.toolbar .frame );
428435            } else  {
429436                insets.bottom  = CGRectGetHeight (self.view .frame ) - CGRectGetMinY (self.toolbar .frame );
430437            }
431438        }
432-     }
433- 
434-     //  If there is no title text, inset the top of the content as high as possible
435-     if  (!self.titleLabel .text .length ) {
436-         if  (self.verticalLayout ) {
439+     } else  {
440+         if  (!self.verticalLayout ) {
441+             insets.left  = 0 .0f ;
442+         } else  {
437443            if  (self.toolbarPosition  == TOCropViewControllerToolbarPositionTop) {
438-                 self.cropView .cropRegionInsets  = UIEdgeInsetsMake (0 .0f , 0 .0f , insets.bottom , 0 .0f );
439-             }
440-             else  { //  Add padding to the top otherwise
441-                 self.cropView .cropRegionInsets  = UIEdgeInsetsMake (insets.top , 0 .0f , insets.bottom , 0 .0f );
444+                 insets.top  = 0 .0f ;
445+             } else  {
446+                 insets.bottom  = 0 .0f ;
442447            }
443448        }
444-         else  {
445-             self.cropView .cropRegionInsets  = UIEdgeInsetsMake (0 .0f , insets.left , insets.bottom , 0 .0f );
446-         }
447- 
448-         return ;
449449    }
450450
451-     //  Work out the size of the title label based on the crop view size
452-     CGRect frame = self.titleLabel .frame ;
453-     frame.size  = [self .titleLabel sizeThatFits: self .cropView.frame.size];
454-     self.titleLabel .frame  = frame;
451+     if  (!self.verticalLayout  || self.toolbarPosition  == TOCropViewControllerToolbarPositionBottom) {
452+         if  (self.titleLabel .text .length ) {
453+             //  Work out the size of the title label based on the crop view size
454+             CGRect frame = self.titleLabel .frame ;
455+             frame.size  = [self .titleLabel sizeThatFits: self .cropView.frame.size];
456+             self.titleLabel .frame  = frame;
457+ 
458+             //  Set out the appropriate inset for that
459+             insets.top  += self.titleLabel .frame .size .height ;
460+             insets.top  += kTOCropViewControllerTitleTopPadding ;
461+         }
462+     }
455463
456-     //  Set out the appropriate inset for that
457-     CGFloat verticalInset = self.statusBarHeight ;
458-     verticalInset += kTOCropViewControllerTitleTopPadding ;
459-     verticalInset += self.titleLabel .frame .size .height ;
460-     self.cropView .cropRegionInsets  = UIEdgeInsetsMake (verticalInset, insets.left , insets.bottom , 0 );
464+     self.cropView .cropRegionInsets  = insets;
461465}
462466
463467- (void )adjustToolbarInsets 
@@ -1100,7 +1104,7 @@ - (UILabel *)titleLabel
11001104    _titleLabel.textAlignment  = NSTextAlignmentCenter;
11011105    _titleLabel.text  = self.title ;
11021106
1103-     [self .view insertSubview: self .titleLabel aboveSubview: self .cropView ];
1107+     [self .view insertSubview: self .titleLabel aboveSubview: self .toolbar ];
11041108
11051109    return  _titleLabel;
11061110}
0 commit comments