Ios 是否正确自定义uiswitch图像?

Ios 是否正确自定义uiswitch图像?,ios,xcode,customization,uiswitch,Ios,Xcode,Customization,Uiswitch,我的iOS 6应用程序中有一个UISwitch,它的开关图像是定制的 self.testSwitch.onImage = [UIImage imageNamed:@"on"]; self.testSwitch.offImage = [UIImage imageNamed:@"off"]; 正如文档中所述,我使用了77点宽和22点高的图像(视网膜中为154x44)。但是我的图像不适合我的uiswitch,它看起来很难看,默认样式隐藏了我的图像,就像附加的图像一样 我应该设置什么使它以正确的方

我的iOS 6应用程序中有一个UISwitch,它的开关图像是定制的

self.testSwitch.onImage = [UIImage imageNamed:@"on"]; 
self.testSwitch.offImage = [UIImage imageNamed:@"off"];
正如文档中所述,我使用了77点宽和22点高的图像(视网膜中为154x44)。但是我的图像不适合我的uiswitch,它看起来很难看,默认样式隐藏了我的图像,就像附加的图像一样

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

以下是。这并不完全是你想要做的,但它展示了技术,并将让你开始!请注意,我使用的是79乘27(不确定您的号码来自何处):

看起来像这样:


苹果没有用于
UISwitch
的外观API。您可以设置着色颜色属性(
onTintColor
)。但我想那不是你想要的。定制UISwitch的问题在于,苹果有可能会拒绝你的应用


但是有一些用于自定义交换机的API,例如
RCSwitch
()或
TTSwitch
。有关如何使用
RCSwitch
的良好教程和示例可在此处找到:

它来自IOS6编程手册,第113页是的,@giuseppe,他们又在iOS7中删除了这个功能!因此,该代码仅适用于iOS 6。这真是令人恼火。是的,这在iOS 7中不起作用,所以不要浪费时间将UISwitch外观更改为其他图像的外观。老实说,这太糟糕了。它是从IOS6来的!对不起,我忘了。但它只适用于iOS 6。使用这些库将使其与旧版本兼容。谢谢,谢谢。不管怎样,我的项目中不需要旧版本,所以看起来您也想更改拇指外观?如果我错了,请纠正我。是的,正如我的书所说,自定义图像中必须包含拇指。请立即尝试以下操作:-
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;