2016-06-22 6 views
-3

В цикле for Я пытаюсь разместить изображения с arrayOfImages в прямоугольниках, которые я создал с помощью CGRect.swift: невозможно присвоить значение типа UIView для ввода CGRect

Но после того, что я хочу использовать класс, который наследуется MyClassViewUIView, потому что у меня есть дополнительные функции, которые я хочу применить на мой прямоугольник изображения, которые я только что создали, но я получаю ошибку

cannot assign value of type UIView to type CGRect 
let widthRect = 50 

func createMyRects(){ 

    let insetSize = CGRectInset(self.view.bounds, CGFloat(Int(widthRect)), CGFloat(Int(widthRect))).size 

    for i in 0...arrayOfImages.count-1{ 

     let pointX = CGFloat(UInt(arc4random() % UInt32(UInt(insetSize.width)))) 
     let pointY = CGFloat(UInt(arc4random() % UInt32(UInt(insetSize.height)))) 
     let showImages = UIImageView(image: arrayOfImages[i]) 
     let newFrame = CGRect(x: pointX, y: pointY, width: CGFloat(widthRect), height: CGFloat(widthRect)) 
     //showImages.frame = newFrame 

     let newFrame2 = MyClassView(frame: newFrame) 

     showImages.frame = newFrame2 //here it says: cannot assign value of type UIView view to type CGRect 
     view.addSubview(showImages) 

    } 
} 
+4

Фактически сообщение об ошибке говорит: 'ошибка: не может присвоить значение«MyClassView»типа к типу«CGRect'' –

ответ

1

Чтобы исправить ошибку, вам необходимо назначить фрейм вашего подкласса UIView кадру.

showImages.frame = newFrame2.frame 

Ваши имена переменных немного вводят в заблуждение.

+0

Спасибо за ответ, я попробовал, что в то же время, добавляя .frame, но до сих пор не получили того, чего я хотел. В классе MyClassView, который наследует UIView, есть некоторые дополнительные функции, такие как перемещение панорамы, получение случайного цвета и перенос объектов спереди, на которые нажимают. Поэтому, для практики, я хочу назначить те функции MyClass новым Rect, которые я создал, за исключением получения случайного цвета, я хочу заполнить Rects изображениями из arrayOfImages. Если мне может быть скучно немного больше и получить ваше мнение об этом, было бы здорово. Спасибо за первый ответ и надеюсь получить от вас другую информацию. – Vuk

0

Джастин дал ответ, который позволит компилировать ваш код, но это все еще не имеет смысла. Я предполагаю, что бит MyClassView(frame: newFrame) является intializer для объекта MyClassView? Почему в мире вы бы создали новый объект представления только для того, чтобы взять его и назначить его другому представлению, а затем отбросить вновь созданный вид?

Зачем вам нужен объект MyClassView? Я предполагаю, что вы этого не сделаете, и этого вам не следует. Избавиться от линии, которая полностью создает объект MyClassView, и просто использовать код, который вы закомментировали? (showImages.frame = newFrame).

+0

Спасибо за ответ. Я попробовал то, что сказал Джастин, добавив .frame, но до сих пор не получил того, чего хотел. Поскольку я новичок в Swift, я хочу, просто для практики, назначить функции MyClassView для вновь созданных Rect, за исключением получения случайного цвета из MyClassView. Вместо того, чтобы получать случайный цвет из MyClass, я хочу заполнить Rects изображениями из arrayOfImages, поэтому я сделал второй кадр. В классе MyClassView, который наследует UIView, есть некоторые дополнительные функции, такие как перемещение панорамы, получение случайного цвета и перенос объектов спереди, на которые нажимают. Было бы замечательно, если бы можно было помочь в этом. – Vuk

+1

«Я хочу, просто для практики, назначить функции MyClassView для вновь созданных Rect». Это бессмысленно. Прямо имеет ровно 4 свойства: x, y, ширина и высота. То же самое для «... я хочу заполнить Rects изображениями из arrayOfImages ...». Вы не заполняете CGRect чем-либо. CGRect - это набор координат. Объект представления имеет свойство frame, которое сообщает ему, где оно находится в его супервизии. Вам нужно остановиться и прочитать основы какао.Вы безнадежно запутались, и я не собираюсь вас путать с несколькими сообщениями на форуме. Только учеба с вашей стороны сделает это. –

+0

Я думаю, что вы меня неправильно поняли, возможно, я не написал это правильно. Я еще раз попрошу вас о помощи, извините за неприятности. Изображение может быть помещено в прямоугольник или что бы то ни было, это слово - поместить его в прямоугольник, добавить его в прямоугольник. Моя проблема заключается не в прямоугольниках, а в назначении моего класса прямоугольникам, которые я создал, поэтому я могу панорамировать прямоугольники (и использовать их последнее местоположение), но я не хочу, чтобы прямоугольники имели цвет, который мой класс дает они, я хочу, чтобы изображения из массива в них. Если вы можете это сделать, то мой класс выглядит так: – Vuk

0

Наконец-то я решил. Просто хотел опубликовать ответ, если кто-то другой сталкивается с той же проблемой. Раньше я пытался назначить изображения, которые я сделал с одного изображения с функцией, нарезанной исходным изображением, на кучу прямоугольников, которые я создал. Но это не сработало, потому что я не правильно сделал свой класс MojView. Он унаследовал UIView, теперь он наследует UIImageView. Кроме того, я внес изменения в одну строку кода, и результат - прямоугольники назначаются изображениями, и все они могут быть перетащены, что было моим намерением, когда я создал MojClass. Вот код для MojClass и остальной части приложения. MojClass: https://github.com/Vukovi/Ne-to/blob/master/README.md & & отдых: https://github.com/Vukovi/ostatak/blob/master/README.md

Смежные вопросы