2015-06-03 3 views
0

У меня есть UIViewНевозможно изменить свойства кадр UIView

@IBOutlet weak var myView: UIView! 

скопировать его с помощью NSArchiver

var topview = NSKeyedUnarchiver.unarchiveObjectWithData(NSKeyedArchiver.archivedDataWithRootObject(self.myView)); 

Я пытаюсь изменить его с помощью CGRectMake

topview?.frame = CGRectMake(0, 0, self.view.frame.width, self.view.frame.height * 1.5) 

В ответ к строке выше '=' Получаю ошибку

Cannot assign to result of this expression 

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

ответ

2

unarchiveObjectWithData возвращает дополнительный AnyObject и сам AnyObject не имеет кадра свойства. Поэтому вам нужно отдать topView на UIView

var topview = NSKeyedUnarchiver.unarchiveObjectWithData(NSKeyedArchiver.archivedDataWithRootObject(self.myView)) as? UIView 
+0

Большое спасибо. Я новичок в Swift и в мои ранние годы программирования, поэтому я пропускаю вещи, которые могут быть очевидны для других. Со временем я это получу. Еще раз спасибо. – dyllandry

0

В моем понимании:

topview Поскольку является обязательным, рамка также является необязательным. Это означает, что есть шанс, что кадр равен нулю. Итак, вы должны назначить CGRect до nil. Это невозможно.

Это должно работать:

if let view = topview as? UIView { 
    view.frame = CGRectMake(0, 0, self.view.frame.width, self.view.frame.height * 1.5) 
}