如何修改 UIControl 框架

How to modify UIControl framework

我正在使用这个框架 HRColorPicker。我想在 Storyboard 的 Autolayout 中布局它的子视图,但无法弄清楚框架是如何工作的。

它的主要 class 是 UIControl 的子class,名为 HRColorPickerView,具有 3 个属性

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

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

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

其中每个都有自己的 class,每个都是选择器中的 3 个子视图之一。

我想用这个颜色选择器创建一个 UIViewController。如果我只是制作一个普通的 UIView 并将其添加到 Storyboard 中的 UIViewController 并将其类型设置为 HRColorPickerView,我会得到默认的颜色选择器并且它工作得很好。该框架的作者说,这些属性是可定制的,甚至在 Storyboard 中有它们的截图。但我不知道如何将它们放入我的情节提要中以便我可以自定义它们。

不过,我想用 Storyboard 来布局 subviews/properties with Autolayout。基本上,我想在 VC 中创建自己的视图,将它们设置为 3 种类型之一,然后将它们布置在 Storyboard 中。当我将它们连接到 .h 文件时,我尝试将视图的类型设置为 3 个中的每一个,但是当我 运行 时,我崩溃了,我认为我做的不对。我创建了 2 个 UIView 和 1 个 UISlider,每个都是 3 个属性之一。 UISlider 得到 "unrecognized selector" 崩溃,这不应该发生,因为支持视图的 class 应该能够处理它。

这是我的 .h 文件,在故事板中,*colorPickerView 下面的 3 个属性是 *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

我不是作者,所以这些都是我的猜测。库代码有点混乱,因为协议与实际的 classes.

共享相同的名称

根据屏幕截图,添加一个UI组件并设置自定义class正确的做法。但是,我认为您的滑块发生错误是由于 HRBrightnessSliderUIControl 的子 class,因此您不能将 UISlider 拖入风景。根据这个SO,你需要拖入另一个UIView来代替。

如果你真的想写你自己的滑块,你可以拖动并使用 UISlider 符合 HRBrightnessSlider 协议。