#ios #uiimageview
#iOS #uiimageview
Вопрос:
У меня проблема в том, что я не могу найти ошибки по названию. И я так много раз искал похожие или связанные вопросы, которые не могу решить.
Я создаю приложение, которое может изменять изображение UIImageView
с помощью кнопки. все в порядке, пока я не использую другую кнопку для изменения размера ImageView (с UIView animateWithDuration CGAffineTransformMakeRotation
помощью), а затем использую эту кнопку для изменения изображения.
странный вывод без каких-либо ошибок! размер изображения изменится обратно, а положение переместится в другие места.
Извините за мой плохой английский.
с графикой,
- У меня есть этот вид [вид без изменения размера] [1]
- Я использую
animateWithDuration CGAffineTransformMakeRotation
изменение размера и ориентации, чтобы сделать вид полноэкранным, как это [вид с измененным размером] [2] - Затем я меняю это изображение этого вида на
imageView.image = newImage(UIImage)
- Однако вид меняется на этот [странный вид] [3] либо размер, либо положение изменяются!
Но ничего не произойдет, если я изменю изображение на шаге 1 (без ориентации и установки рамки).
Пожалуйста, помогите, я не могу найти ошибки, потому что есть только одно место, которое изменяет размер и ориентацию представления.
Интересно , есть ли что -то UIImage
, что повлияло бы UIImageView
на это. Но я не могу найти ответ.
(фотографии внизу)
это код для поворота изображения ivew, если уже есть установленное изображение, после поворота изображение также в порядке, но проблема возникает после поворота, а затем установите новое изображение в виде изображения
-(void)transformToDirection:(NSInteger)dir
{
rotation = M_PI_2;
CGFloat screenW = [[UIScreen mainScreen] bounds].size.width;
CGFloat screenH = [[UIScreen mainScreen] bounds].size.height;
CGRect portraitFrame = _imageVIew.frame;
CGRect landscapeFrame = CGRectMake(0, 0, screenW, screenH);
switch (dir) {
case UIInterfaceOrientationPortrait:
{
[UIView animateWithDuration:1 delay:0 options:0 animations:^{
_imageVIew.transform = CGAffineTransformMakeRotation(3/4 * rotation);
[_imageVIew setFrame:portraitFrame];
}completion:^(BOOL finished){
isFullScreen = false;
}];
}
break;
case UIInterfaceOrientationLandscapeRight:
{
[UIView animateWithDuration:1 delay:0 options:0 animations:^{
_imageVIew.transform = CGAffineTransformMakeRotation(rotation);
[_imageVIew setFrame:landscapeFrame];
}completion:^(BOOL finished){
isFullScreen = true;
}];
}
break;
case UIInterfaceOrientationLandscapeLeft:
{
[UIView animateWithDuration:TIME_ANIMATE_FULLSCREEN delay:0 options:0 animations:^{
_imageVIew.transform = CGAffineTransformMakeRotation(-rotation);
[_imageVIew setFrame:landscapeFrame];
}completion:^(BOOL finished){
isFullScreen = true;
}];
}
break;
default:
break;
}
}
это изображение набора изображений (все новые изображения имеют одинаковый размер), которое вызывается кнопкой.
dispatch_async(dispatch_get_main_queue(), ^{
if (loadedimage) {
self.imageVIew.image = loadedimage;
} else {
self.PBMainImageVIew.image = nil;
dlog(@"request image failed");
}
});
Комментарии:
1.[1]: i.stack.imgur.com/PQvTf.png [2]: i.stack.imgur.com/nH3cn.png [3]: i.stack.imgur.com/L8yBA.png
2. Здравствуйте, эти 2 изображения (изображение 1 и новое изображение) имеют одинаковое соотношение размеров?
3. да, они имеют одинаковое соотношение размеров, @BashirSidani
4. итак, вы поворачиваете изображение на 90 градусов и делаете его таким же большим, как экран, верно? также вы хотите, чтобы новое изображение было повернуто вправо?
5. да, для вашего 1-го вопроса, но я установил новое изображение в повернутом виде изображения, я не поворачиваю изображение, а просматриваю только 2-й вопрос да, я хочу, чтобы новое изображение также было повернуто в том же виде изображения @BashirSidani