如何自定义切换与UISwitch完全一样?

时间:2017-05-02 12:32:37

标签: ios objective-c custom-controls uiswitch

我尝试使自定义切换与UISwitch完全相同。可以切换,按下按钮或拖动按钮。请建议我一个想法。

3 个答案:

答案 0 :(得分:1)

您可以使用bezier路径绘制自定义开关。

enter image description here

UIView的子类,在drawRect方法中,使用此方法。

这是一个使用bezier路径绘制的简单开关:

- (void)drawSwitch: (CGRect)frame thumbPos: (CGFloat)thumbPos
{
    //// Color Declarations
    UIColor* yesColor = [UIColor colorWithRed: 0.237 green: 0.811 blue: 0.624 alpha: 1];
    UIColor* noColor = [UIColor colorWithRed: 0.8 green: 0.32 blue: 0.32 alpha: 1];

    //// Variable Declarations
    UIColor* switchColor = thumbPos > 20 ? yesColor : noColor;

    //// Rectangle Drawing
    UIBezierPath* rectanglePath = [UIBezierPath bezierPathWithRoundedRect:yourRect cornerRadius: 20];
    [switchColor setFill];
    [rectanglePath fill];


    //// Oval Drawing
    UIBezierPath* ovalPath = [UIBezierPath bezierPathWithOvalInRect: CGRectMake(thumbPos, 2.5, 35, 35)];
    [UIColor.whiteColor setFill];
    [ovalPath fill];
}

拇指指针是开关中白色圆圈的位置。您可以在滑动手势上更改此设置,并通过更改此值为交换机设置动画。

开关颜色将根据thumbPos进行更改。

答案 1 :(得分:0)

您可以使用与UISwitch相同的两个图像,并在点击UI按钮时更改设置图像。

答案 2 :(得分:0)

您可以添加按钮并为状态设置图像。 您必须为两种状态设置图像 - >  1:选择状态  2:默认状态

并在此按钮的操作方法中更改状态。