【发布时间】:2011-08-26 22:06:01
【问题描述】:
我的客户不喜欢 iOS 5 UISwitch 上的光泽,并希望我使用一些图像创建一个非光泽版本。但是我不知道我会如何解决这个问题。
我创建了一个 UIView 子类,但我不知道下一步该做什么。
对我接下来需要做什么有什么建议吗?
【问题讨论】:
标签: iphone objective-c ios subclass uiswitch
我的客户不喜欢 iOS 5 UISwitch 上的光泽,并希望我使用一些图像创建一个非光泽版本。但是我不知道我会如何解决这个问题。
我创建了一个 UIView 子类,但我不知道下一步该做什么。
对我接下来需要做什么有什么建议吗?
【问题讨论】:
标签: iphone objective-c ios subclass uiswitch
您可以使用 CoreGraphics(不使用图像)重新创建 UISwitch。
看看这个:DCRoundSwitch
DCRoundSwitch 旨在替代UISwitch。
无论如何你都应该创建一个UIControl 子类!
【讨论】:
有很多方法可以做你想做的事。一种方法是使用 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"];
}
}
【讨论】:
您可以通过继承 UIControl 来重新创建自定义 UISwitch。然后,您可以使用常规 UIView 来创建几乎任何您想要的效果。你可以看看SevenSwitch。我创建的自定义 UISwitch 替换。它是无光泽的,颜色可以根据您的喜好定制。
【讨论】: