Как заставить представление отображать себя?

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

Увеличенный вид нарисован на заказ, что создает большой проблема с этим подходом. Если я создаю увеличивающееся представление в методе viewDidLoad основного представления и устанавливаю его фрейм на полноэкранный размер, немедленно вызывается метод представления drawRect , и представление правильно отображается в полном объеме. размер. Если я затем использую этот вид в анимации, все будет работать, как ожидалось.

Однако, Мне нужно, чтобы этот увеличивающийся вид отличался в зависимости от того, какое подпредставление было задействовано, поэтому мне нужно каждый раз заново создавать / перерисовывать его. Проблема в том, что когда я делаю это в ответ на событие касания, метод представления drawRect не вызывается до тех пор, пока не начнется анимация, и тогда кадр представления будет небольшим, а не полноэкранным, и поскольку в результате все отображается неправильно.

В моем коде для события касания я явно устанавливаю кадр представления в полноэкранный режим и вызываю setNeedsDisplay перед запуском анимации, но это не имеет никакого эффекта - drawRect просто не вызывается, пока не начнется анимация.

Есть ли способ принудительно перерисовать, @ Встроенный частное местоположение LatLon; ... В указанном классе: @Embeddable открытый класс LatLon реализует сериализуемый {частный двойной лат; частный двухместный номер; ...

В классе-владельце:

...
@Embedded
private LatLon location;
...

В указанном классе:

@Embeddable
public class LatLon implements Serializable {
    private double lat;
    private double lon;
    ...
}

Когда я пытаюсь сохранить экземпляр класса-владельца с нулевым значением для LatLon :

org .hibernate.PropertyValueException: свойство not-null ссылается на нулевое или временное значение: com. *. location .

Что я могу сделать, чтобы позволить этому значению быть нулевым в классе-владельце? Я пробовал сделать его Nullable , но это не дало результата.

6
задан Finbarr 23 March 2011 в 16:33
поделиться