Можно ли установить положение изображения UIImageView?
-
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;