2011-08-26 95 views
1

我的客户不喜欢iOS 5 UISwitch的光泽,并希望我使用某些图像创建非光面版本。不过我不知道我会怎么做这个。重新创建UISwitch

我创建了一个UIView子类,我不知道接下来要做什么。

关于接下来我需要做什么的任何建议?

回答

8

您可以使用CoreGraphics(不使用图像)重新创建UISwitch

看一看这样的:DCRoundSwitch

DCRoundSwitch被设计成在替代UISwitch下降。

无论如何,你应该创建一个UIControl子类!

+0

DCRoundSwitch是好的,我在一个项目中使用它,但我认为这并不完全是一个简易替换UISwitch的 - 缺少任何一种InterfaceBuilder的整合。 –

2

有很多方法可以做你想做的。一种方法是使用UIImageView,并在用户点击控件时切换图像。

喜欢的东西:

-(void) loadView 
{ 
    [super loadView]; 

    UIImageView *image1 = [UIImage imageNamed:@"image1-from-client"]; 
    UIImageView *imageView = [[[UIImageView alloc] initWithImage:image1] autorelease]; 
    imageView.userInteractionEnabled = YES; 
    [self.view addSubview:imageView]; 

    // detect the tap 
    UITapGestureRecognizer *tapRecognizer = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)] autorelease]; 
    [imageView addGestureRecognizer:tapRecognizer]; 
} 

// this gets called when the user taps 
-(void) tap:(UIGestureRecognizer*)gesture 
{ 
    UIImageView *viewTapped = (UIImageView*)gesture.view; 
    if (viewTapped.tag == 0) 
    { 
    viewTapped.tag = 1; 
    viewTapped.image = [UIImage imageNamed:@"image2-from-client"]; 
    } 
    else 
    { 
    viewTapped.tag = 0; 
    viewTapped.image = [UIImage imageNamed:@"image1-from-client"]; 
    } 
} 
0

您可以通过继承UIControl重新创建一个自定义UISwitch。然后你可以使用普通的UIViews创建你想要的几乎任何效果。你可以看看SevenSwitch。我创建的自定义UISwitch替代品。它是无光泽的,颜色可以根据您的喜好进行定制。

https://github.com/bvogelzang/SevenSwitch