Изменение размера uiview вместе с вращением uiimageview - PullRequest
1 голос
/ 10 января 2012

У меня есть одно представление uiimageview, которое добавляется как подпредставление в uiview.рамка для uiimageview - это границы uiview.Я использую это представление только для того, чтобы показать границу.Теперь, когда я поворачиваю вид изображения, поворачивается только вид изображения, но при вращении дополнительной части, выходящей за пределы просмотра, происходит обрезка.Как я могу изменить размер uiview вместе с вращением просмотра изображений.

Это мой код.Я сделал то, что вы сказали, но размер не меняется

 - (void)handleRotate:(UIRotationGestureRecognizer *)recognizer {



float rotation = angle + -recognizer.rotation;

recognizer.view.transform = CGAffineTransformMakeRotation(-rotation);


if (recognizer.state == UIGestureRecognizerStateEnded) {

    angle = rotation;

}  

    CGFloat diagonal = sqrt( recognizer.view.bounds.size.width*recognizer.view.bounds.size.width + recognizer.view.bounds.size.height*recognizer.view.bounds.size.height );

    CGRect rect = view.frame;
    rect.origin.x -= ((rect.size.width-diagonal)/2);
    rect.origin.y -= ((rect.size.height-diagonal)/2);
    rect.size.width = diagonal;
    rect.size.height = diagonal;
   view.frame = rect;


}

Ответы [ 2 ]

1 голос
/ 10 января 2012

Найти диагональ UIImageView.

CGFloat diagonal = sqrt( imageview.size.width*imageview.size.width + imageview.size.height*imageview.size.height );

Затем установите его в рамку UIView.

CGRect rect = view.frame;
rect.origin.x -= ((rect.size.width-diagonal)/2);
rect.origin.y -= ((rect.size.height-diagonal)/2);
rect.size.width = diagonal;
rect.size.height = diagonal;
view.frame = rect;

Edit: В следующей строке вам может не понадобиться размер границ.

   CGFloat diagonal = sqrt( recognizer.view.bounds.size.width*recognizer.view.bounds.size.width + recognizer.view.bounds.size.height*recognizer.view.bounds.size.height );

Попробуйте сделать следующее:

CGFloat diagonal = sqrt( recognizer.view.frame.size.width*recognizer.view.frame.size.width + recognizer.view.frame.size.height*recognizer.view.frame.size.height );
0 голосов
/ 10 сентября 2012

Вы можете сделать это как ..

     float minX = MIN(self.imgDisplayImage.frame.origin.x,self.imgDisplayImage.frame.origin.x+self.imgDisplayImage.frame.size.width);
     float maxX = MAX(self.imgDisplayImage.frame.origin.x,self.imgDisplayImage.frame.origin.x+self.imgDisplayImage.frame.size.width);


     float minY = MIN(self.imgDisplayImage.frame.origin.y,self.imgDisplayImage.frame.origin.y+self.imgDisplayImage.frame.size.height);
     float maxY = MAX(self.imgDisplayImage.frame.origin.y,self.imgDisplayImage.frame.origin.y+self.imgDisplayImage.frame.size.height);


     float finalWidth = maxX-minX; 
     float finalHeight = maxY-minY; 


     CGPoint initialCenter = self.center;
     self.frame = CGRectMake(minX, minY,finalWidth,finalHeight);

     CGPoint newCenter;
     newCenter.x = initialCenter.x+minX;
     newCenter.y = initialCenter.y+minY;

     self.center = newCenter;


     CGPoint imgCenter = self.imgDisplayImage.center;


     self.imgDisplayImage.center = CGPointMake(imgCenter.x-minX, imgCenter.y-minY);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...