4

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

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

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

在此处输入图像描述

我应该设置什么以使其以正确的方式工作?

4

2 回答 2

6

这是我书中的代码。这并不完全是您想要做的,但它展示了这项技术并将帮助您入门!请注意,我使用的是 79 x 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;

看起来像这样:

在此处输入图像描述

于 2013-05-08T17:35:15.030 回答
2

Apple 没有用于UISwitch. 您可以设置色调颜色属性 ( onTintColor)。但这不是你想要的,我猜。自定义 UISwitch 的问题在于 Apple 可能会拒绝您的应用程序。

但是有一些用于自定义开关的 API,例如RCSwitch( https://github.com/robertchin/rcswitch ) 或TTSwitch. 一个很好的教程和如何使用的例子 RCSwitch可以在这里找到:http ://www.raywenderlich.com/23424/photoshop-for-developers-creating-a-custom-uiswitch 。

于 2013-05-08T17:41:13.267 回答