2016-01-11 2 views
0

Я использую эту структуру HRColorPicker. Я хочу, чтобы макет представлял собой subviews в Autolayout в Storyboard, но не может понять, как работает структура.Как изменить структуру UIControl

Это основной класс является подклассом UIControl называется HRColorPickerView с 3-мя свойствами

@property (nonatomic, strong) IBOutlet UIView <HRColorInfoView> *colorInfoView; 

@property (nonatomic, strong) IBOutlet UIControl <HRColorMapView> *colorMapView; 

@property (nonatomic, strong) IBOutlet UIControl <HRBrightnessSlider> *brightnessSlider; 

Каждый из них имеет свой собственный класс и каждый один из 3-х подвидов в селекторе.

Я хочу создать UIViewController с этим выбором цвета в нем. Если я просто сделаю простой UIView и добавлю его в UIViewController в Раскадровка и установите его тип HRColorPickerView, я получаю выбор цвета по умолчанию, и он отлично работает. Автор рамок говорит, что эти свойства настраиваются и даже снимаются с них в Storyboard. Но я понятия не имею, как забрать их в свою раскадровку, чтобы я мог их настроить.

Тем не менее, я хочу использовать Storyboard, чтобы выложить объекты subviews/properties с помощью Autolayout. В принципе, я хочу создать свои собственные представления в VC, установить их как один из трех типов и выложить их в Storyboard. Я попытался установить тип вида для каждого из 3, когда я подключаю их к файлу .h, но когда я запускаю, у меня возникают сбои, и я не думаю, что я делаю это правильно. Я создаю 2 UIView s и 1 UISlider, каждый из которых является одним из трех свойств. UISlider получает «непризнанный селектор», который не должен происходить, поскольку класс, поддерживающий представления, должен иметь возможность обрабатывать его.

Это мой .h-файл и в раскадровке, 3 свойства ниже * colorPickerView являются областями * colorPickerView.

@interface ColorPickerViewController : UIViewController 

@property (strong, nonatomic) IBOutlet HRColorPickerView *colorPickerView; 
@property (strong, nonatomic) IBOutlet HRColorMapView *colorMap; 
@property (strong, nonatomic) IBOutlet HRColorInfoView *colorInfo; 
@property (strong, nonatomic) IBOutlet HRBrightnessSlider *brightSlider; 

@end 
+0

В нижней части страницы, которую вам понравилось (http://hayashi311.github.io/Color-Picker-for-iOS/) описано, как костюмы пользовательского интерфейса. – dasdom

+0

@ dasdom это говорит, что вы можете, однако, не так, как это сделать. Код UISlider, который он показывает, не работал, когда я его пробовал. – noobsmcgoobs

+0

Вы пытались спросить автора lib? – dasdom

ответ

0

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

В соответствии с рисунком на скриншоте добавьте компонент пользовательского интерфейса и установите собственный класс - - правильный способ сделать это. Тем не менее, я считаю, что ошибка произошла с вашим слайдером из-за того, что HRBrightnessSlider является подклассом UIControl, поэтому вы не можете перетащить UISlider в представление. В соответствии с этим SO вам нужно перетащить еще один UIView.

Если вы действительно хотите написать свой собственный слайдер, вы можете перетащить и использовать UISlider, выполнив протокол HRBrightnessSlider.

+0

спасибо, я попробую и дам вам знать, что произойдет. ДА, имена протоколов меня убивали! – noobsmcgoobs