如何修改 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是正确的做法。但是,我认为您的滑块发生错误是由于 HRBrightnessSlider
是 UIControl
的子 class,因此您不能将 UISlider
拖入风景。根据这个SO,你需要拖入另一个UIView
来代替。
如果你真的想写你自己的滑块,你可以拖动并使用 UISlider
符合 HRBrightnessSlider
协议。
我正在使用这个框架 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是正确的做法。但是,我认为您的滑块发生错误是由于 HRBrightnessSlider
是 UIControl
的子 class,因此您不能将 UISlider
拖入风景。根据这个SO,你需要拖入另一个UIView
来代替。
如果你真的想写你自己的滑块,你可以拖动并使用 UISlider
符合 HRBrightnessSlider
协议。