我刚刚创建了这个视图,并看到了你的问题。
希望这能有所帮助。
.h文件:
#import <UIKit/UIKit.h>
@interface EDSwitch : UIView
{
UIButton* onButton,*offButton;
UIImageView* bg;
}
- (id)initWithText:(NSString*)on andText:(NSString*)off andDelegate:(id)delegate andOnSelector:(SEL)onSelector andOffSelector:(SEL)offSelector andBackgroundImage:(UIImage*)bgImage andStartingValue:(BOOL)b;
@end
和 .m 文件:
#import "EDSwitch.h"
@implementation EDSwitch
- (id)initWithText:(NSString*)on andText:(NSString*)off andDelegate:(id)delegate andOnSelector:(SEL)onSelector andOffSelector:(SEL)offSelector andBackgroundImage: (UIImage*)bgImage andStartingValue:(BOOL)b
{
self = [super initWithFrame:CGRectZero];
if (self) {
UILabel* onLabel = [[UILabel alloc] initWithFrame:CGRectMake(2, 8, 50, 20)];
onLabel.text = on ;
onLabel.tag = 1;
onLabel.font = [UIFont fontWithName:kCalibri size:15];
onLabel.textAlignment = UITextAlignmentCenter;
onLabel.textColor = [UIColor colorFromHexString:@"#009dd0"];
onLabel.backgroundColor = [UIColor clearColor];
[onLabel sizeToFit];
[onLabel setWidth:onLabel.frame.size.width + 4];
UILabel* offLabel = [[UILabel alloc] initWithFrame:CGRectMake(2, 8, 50, 20)];
offLabel.text = off ;
offLabel.tag = 1;
offLabel.textAlignment = UITextAlignmentCenter;
offLabel.font = [UIFont fontWithName:kCalibri size:15];
offLabel.textColor = [UIColor colorFromHexString:@"#009dd0"];
offLabel.backgroundColor = [UIColor clearColor];
[offLabel sizeToFit];
[offLabel setWidth:offLabel.frame.size.width + 4];
float high = MAX([offLabel.text sizeWithFont:offLabel.font].width,[onLabel.text sizeWithFont:onLabel.font].width) + 10;
onButton = [UIButton buttonWithType:UIButtonTypeCustom];
[onButton addTarget:self action:@selector(toggled:) forControlEvents:UIControlEventTouchUpInside];
[onButton addTarget:delegate action:onSelector forControlEvents:UIControlEventTouchUpInside];
offButton = [UIButton buttonWithType:UIButtonTypeCustom];
[offButton addTarget:self action:@selector(toggled:) forControlEvents:UIControlEventTouchUpInside];
[offButton addTarget:delegate action:offSelector forControlEvents:UIControlEventTouchUpInside];
[onButton setWidth:high];
[onButton setX:0];
[onButton addSubview:onLabel];
[onLabel setWidth:high];
[onLabel setX:0];
[offButton setWidth:high];
[offButton addSubview:offLabel];
[offButton setX:high];
[offLabel setWidth:high];
[offLabel setX:0];
bg = [[UIImageView alloc] initWithImage:bgImage];
self.frame = CGRectMake(200, 200 , (high*2), 34);
self.layer.borderColor = [[[UIColor colorFromHexString:@"#009dd0"] colorWithAlphaComponent:0.5] CGColor];
self.layer.borderWidth = 0.5;
self.layer.cornerRadius = 5;
[self setX:[UIApplication sharedApplication].keyWindow.frame.size.width - self.frame.size.width - 8];
[self addSubview:bg];
[bg setWidth:[self getWidth]];
[bg setHeight:[self getHeight]];
[self addSubview:onButton];
[self addSubview:offButton];
[onButton setHeight:[self getHeight]];
[offButton setHeight:[self getHeight]];
if(b){
[onButton setBackgroundColor:[UIColor clearColor]];
[offButton setBackgroundColor:[UIColor whiteColor]];
}
else{
[onButton setBackgroundColor:[UIColor whiteColor]];
[offButton setBackgroundColor:[UIColor clearColor]];
}
}
return self;
}
-(void)toggled:(UIButton*)sender{
if(sender == onButton){
UILabel* l = (UILabel*)[onButton viewWithTag:1];
l.textColor = [UIColor grayColor];
[onButton setBackgroundColor:[UIColor clearColor]];
l = (UILabel*)[offButton viewWithTag:1];
l.textColor = [UIColor colorFromHexString:@"#009dd0"];
[offButton setBackgroundColor:[UIColor whiteColor]];
}
else{
UILabel* l = (UILabel*)[offButton viewWithTag:1];
l.textColor = [UIColor grayColor];
[offButton setBackgroundColor:[UIColor clearColor]];
l = (UILabel*)[onButton viewWithTag:1];
l.textColor = [UIColor colorFromHexString:@"#009dd0"];
[onButton setBackgroundColor:[UIColor whiteColor]];
}
}
@end
使用方法:
[[UIApplication sharedApplication].keyWindow addSubview:[[EDSwitch alloc] initWithText:@"aksdjaksdjh" andText:@"dasjdsaj" andDelegate:self andOnSelector:@selector(logon) andOffSelector:@selector(logoff) andBackgroundImage:[UIImage imageNamed:@"toggleBottom.png"] andStartingValue:YES]];
长寿和繁荣,
eiran
user:119114 class-dump
粘贴到搜索栏中,你会看到我在至少5个答案中提到了class-dump。但这并不改变问题的本质。Class-dump只能让你回溯部分代码。Ifalin是否运行了class-dump(需要解密存档)来查看商店中几乎每个应用程序?我认为不是。他/她暗示你可以仅仅通过查看所有具有自定义外观控件的应用程序来修改UISwitch,并且这是不正确的(不是证据)。顺便说一下,我也知道IDA。 - Nate