Можно ли установить положение изображения UIImageView?

StackOverflow https://stackoverflow.com/questions/710675

  •  22-08-2019
  •  | 
  •  

Вопрос

у меня есть UIImageView который отображает увеличенное изображение.Кажется, оно центрировано, но я хотел бы переместить это изображение внутрь этого изображения. UIImageView.Я посмотрел на Переместить меня образец от Apple, но я не мог понять, как они это делают.Кажется, у них даже нет для этого UIImageView.Есть идеи?

Это было полезно?

Решение

Оригинальный ответ был заменен CoreAnimation в iOS4.

Итак, как говорит Gold Thumb:вы можете сделать это, обратившись к CALayer UIView.В частности, его contentRect:

Из Apple Документы:Прямоугольник в пространстве единичных координат, определяющий часть содержимого слоя, которую следует использовать.Анимируемый.

Другие советы

Вам нужно что-то вроде (например.показаны 30% на 30% верхнего левого угла исходного изображения):

imageView.layer.contentsRect = CGRectMake(0.0, 0.0, 0.3, 0.3);

Описание «contentRect»:Прямоугольник в пространстве единичных координат, определяющий часть содержимого слоя, которую следует использовать.

Вы хотите, чтобы отобразить изображение так, чтобы оно содержалось в UIImageView?В этом случае просто измените contectMode UIImageView на UIViewContentModeScaleToFill (если соотношение сторон несущественно) или UIViewContentModeScaleAspectFit (если вы хотите сохранить соотношение сторон)

В IB это можно сделать, установив режим в Инспекторе.

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

yourImageView.contentMode = UIViewContentModeScaleToFill;

Если вы хотите отобразить большое изображение, как оно находится внутри UIImageView., лучший и самый простой способ сделать это — разместить представление изображения внутри UIScrollView.Таким образом, вы сможете увеличивать и уменьшать изображение, а также перемещать его.

Надеюсь, это поможет.

Не похоже, что образец MoveMe делает что-то подобное тому, что вы хотите.PlacardView в нем имеет тот же размер, что и используемое изображение.Единственное изменение размера — это преобразование представления, которое не влияет на область просмотра изображения.Насколько я понимаю, у вас есть большая картинка, и вы хотите отобразить в ней небольшую область просмотра.Для этого не существует простого метода класса, но есть функция, которую вы можете использовать для получения желаемых результатов:CGImageCreateWithImageInRect(CGImageRef, CGRect) вам поможет.

Вот краткий пример его использования:

CGImageRef imageRef = CGImageCreateWithImageInRect([largeImage CGImage], cropRect);
[UIImageView setImage:[UIImage imageWithCGImage:imageRef]];
CGImageRelease(imageRef);

Большое спасибо.Я нашел довольно простое решение, которое выглядит так:

CGRect frameRect = myImage.frame;
CGPoint rectPoint = frameRect.origin;
CGFloat newXPos = rectPoint.x - 0.5f;
myImage.frame = CGRectMake(newXPos, 0.0f, myImage.frame.size.width, myImage.frame.size.height);

Я просто перемещаю рамку.Бывает, что часть кадра выходит за пределы поля зрения iPhone, но я надеюсь, что это не будет иметь большого значения.Над ним маска, поэтому это не выглядит странно.Пользователь не замечает, как это делается.

Вы можете добиться того же:

UIImageView *imgVw=[[UIImageView alloc]initwithFrame:CGRectMake(x,y,height,width)];     
imgVw.image=[UIImage imageNamed:@""];
[self.view addSubView imgVw];
imgVw.contentMode = UIViewContentModeScaleToFill;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top