正确定制uiswitch图像?

时间:2013-05-08 17:20:08

标签: ios xcode customization uiswitch

我的iOS 6应用程序中有一个UISwitch,可以自定义图像的开启和关闭。

self.testSwitch.onImage = [UIImage imageNamed:@"on"]; 
self.testSwitch.offImage = [UIImage imageNamed:@"off"];

我为此目的使用77点宽和22点高的图像(视网膜中154x44),正如文档中所述。但是我的图像不适合我的uiswitch,它似乎很难看,默认样式隐藏了我的图像,就像附加图像一样。

enter image description here

我应该设置什么才能让它以正确的方式运作?

2 个答案:

答案 0 :(得分:6)

这是code from my book。这不是你想要做的,但它显示了这项技术,并将帮助你入门!请注意,我使用的是79乘27(不确定从哪里获得数字):

UIGraphicsBeginImageContextWithOptions(CGSizeMake(79,27), NO, 0);
[[UIColor blackColor] setFill];
UIBezierPath* p = [UIBezierPath bezierPathWithRect:CGRectMake(0,0,79,27)];
[p fill];
NSMutableParagraphStyle* para = [NSMutableParagraphStyle new];
para.alignment = NSTextAlignmentCenter;
NSAttributedString* att =
    [[NSAttributedString alloc] initWithString:@"YES" attributes:
        @{
            NSFontAttributeName:[UIFont fontWithName:@"GillSans-Bold" size:16],
            NSForegroundColorAttributeName:[UIColor whiteColor],
            NSParagraphStyleAttributeName:para
        }];
[att drawInRect:CGRectMake(0,5,79,22)];
UIImage* im = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
self.sw2.onImage = im;

看起来像这样:

enter image description here

答案 1 :(得分:2)

Apple没有UISwitch的外观API。您可以设置色调颜色属性(onTintColor)。但我想这不是你想要的。关于自定义UISwitch的问题在于Apple有机会拒绝您的应用。

但是有一些自定义开关的API,例如RCSwitchhttps://github.com/robertchin/rcswitch)或TTSwitch。有关如何使用RCSwitch的好教程和示例,请访问:http://www.raywenderlich.com/23424/photoshop-for-developers-creating-a-custom-uiswitch