2015-03-05 3 views
0

Я довольно новичок в этом, и я не совсем понимаю всю внутреннюю работу Objective-C, поэтому я надеялся, что кто-то сможет мне помочь.объектив c изменить размер subview

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

Я понял, что должен быть лучший способ сделать это, и мне интересно, можно ли создать что-то вроде «subview» (я не знаю, правильно ли это для него) и вставьте button/label/imageView на это, а затем анимировать подвью. Я бы предположил, что это будет что-то вроде:

Person *person = [[Person alloc] init]; 
person.view.frame = CGRectMake(x, y, width, height); 
[self.view addSubview:person.view]; 

Но это, похоже, не работает. Какие-либо предложения?

Заранее благодарен!

+0

Да это, безусловно, возможно! Является ли ваш класс Person унаследованным от UIViewController? Это можно увидеть в файле .h, где указано Person. – DanielG

+0

Я так считаю. .h начинается с (после импорта) с @interface. Person: UIViewController { – Hailey

+0

Если Person наследует UIViewController, это не очень хорошее решение для добавления контроллера представления в качестве подзапроса. Вместо этого перейдите к построителю интерфейса и измените класс вашего контроллера вида на «Лицо». – beeef

ответ

0

ОК, поэтому, боюсь, вам нужно немного изменить свой дизайн. Apple работает над архитектурным дизайном MVC, который действительно важно придерживаться, когда дело доходит до создания приложений.

Что вы имеете здесь, это смешение между моделью и представлением, что точно не должно происходить с MVC.

По существу у вас есть:

1) Model слой, где у вас есть все данные и объекты для инкапсуляции информации, так же, как ваш Person класса.

2) View слой, который предназначен для управления и определения элементов пользовательского интерфейса ваших приложений, таких как UIView, UIImageView e.t.c.

3) Controller слой, который является интерфейсом между Model и View слоями. Сюда входят классы, такие как UIViewController, который управляет UIView.

В вашей ситуации вам нужен UIView, в который вы можете поместить все соответствующие пользовательские интерфейсы (кнопки, изображения), которые рассказывают пользователю о человеке. Тогда вам понадобится класс Person. Возможно, подкласс NSObject, который определяет информацию для каждого Person в вашем приложении, например. возможно, свойство UIImage, которое может быть отображено в UIImageView. А затем контроллер (я бы порекомендовал UIViewController), который создавал бы соответствующие объекты Person, а затем обновлял пользовательский интерфейс по мере необходимости.

Я не совсем уверен, что вы хотите с точки зрения анимации, но вы можете посмотреть this для получения информации о том, как анимировать виды. И проверить:

[UIView animateWithDuration:1 
       animations:^{ 
    // Cool animations here... 
}]; 

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

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