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

Другие ответы верны, проблема в том, что i будет идти один за концом массива, и это создаст вам проблемы. Это иллюстрация проблемы, которая может возникнуть при использовании циклов for для итерации по массиву; i только случайно связан с массивом, по которому вы итерируете, и достаточно легко иметь проблемы, когда отношения, которые мы считаем , которые мы создаем между i и массивом, не совсем то же самое, что мы создаем в коде.

По этой причине я бы рекомендовал использовать что-то вроде reduce. Вы также можете использовать forEach и следить за суммой, но reduce на данный момент является лучшим вариантом для суммы, так как она предназначена для получения чего-то итерируемого и получения одного значения.

Вот как это может выглядеть:

class Polygon
{
    constructor(sides)
    {
        this.sides = sides;
    }

    perimeter()
    {
      return this.sides.reduce((prev, curr) => prev + curr, 0);
    }
}

const rectangle = new Polygon([10, 20, 10, 20]);
const square = new Polygon([10, 10, 10, 10]);
const pentagon = new Polygon([10, 20, 30, 40, 43]);

console.log(rectangle.perimeter());
console.log(square.perimeter());
console.log(pentagon.perimeter());

16
задан Ankur Arya 1 November 2013 в 08:53
поделиться

4 ответа

Исходный Ответ был заменен CoreAnimation в iOS4.

Таким образом, поскольку Золотой Ползунок говорит: можно сделать это путем доступа к CALayer UIVIEW. Конкретно его contentRect:

Из Документов Apple: прямоугольник, в координатном пространстве единицы, которое определяет часть содержания слоя, которое должно использоваться. Animatable.

19
ответ дан 30 November 2019 в 15:15
поделиться

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

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

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

yourImageView.contentMode = UIViewContentModeScaleToFill;

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

Надежда, которая помогает.

12
ответ дан 30 November 2019 в 15:15
поделиться

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

Вот короткий пример с помощью него:

CGImageRef imageRef = CGImageCreateWithImageInRect([largeImage CGImage], cropRect);
[UIImageView setImage:[UIImage imageWithCGImage:imageRef]];
CGImageRelease(imageRef);
4
ответ дан 30 November 2019 в 15:15
поделиться

Большое спасибо. Я нашел довольно простое решение, которое похоже на это:

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, но я надеюсь, что это не будет иметь значения очень. Существует маска по нему, таким образом, это не выглядит странным. Пользователь не делает totice, как он сделан.

3
ответ дан 30 November 2019 в 15:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: