2015-08-02 1 views
0

Я следовал this tutorial, чтобы создать пользовательский слайдер, который выполняет подклассы UIControl. Он отлично работает, когда элемент управления программно вставлен в представление с точным размером, положением и т. Д.Пользовательский UIControl (слайдер) не соблюдает ограничений до взаимодействия с

Однако я хотел использовать Раскадровка, чтобы визуально выровнять компоненты моего вида, поэтому я добавили @IBInspectable пользовательский слайдер. Вот моя проблема:

  1. В Раскадровке я добавил пользовательский слайдер и добавил ограничения для «Trailing Space to superview» и «Leading Space to superview».
  2. Однако, когда я запускаю его на своем устройстве, вначале он не соблюдает установленные выше ограничения , пока я не взаимодействую с слайдером (коснитесь кнопки), и вдруг ограничения будут применены.
  3. Я попытался позвонить setNeedsDisplay в методе init (coder: NSCoder), но ничего не работает.

Есть ли у кого-нибудь идеи, почему это происходит и как я могу это исправить?

ответ

0

Вызов setNeedsDisplay в init, очевидно, слишком рано. Попробуйте viewWillAppear, а также попробуйте позвонить layoutSubviews на контроллере view.

Но, конечно, основная ошибка - неправильная конфигурация в раскадровке. (Это было бы сложно отладить через эту платформу).

+0

Спасибо за подсказку. Похоже, трюк состоял в том, чтобы переопределить layoutSubviews в моем пользовательском UIControl, а затем вызвать setNeedsDisplay и т. Д. –

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