亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS開發中UISwitch按鈕的使用方法簡介

2020-07-26 03:32:41
字體:
來源:轉載
供稿:網友

一、第一種創建UISwitch控件的方法,在代碼中動態創建。
1、打開Xcode  4.3.2, 新建項目Switch,選擇Single View Application。
2、打開ViewController.m文件在viewDidLoad方法里添加代碼:

復制代碼 代碼如下:

- (void)viewDidLoad
{
    [super viewDidLoad];
    UISwitch *switchButton = [[UISwitch alloc] initWithFrame:CGRectMake(50, 100, 20, 10)];
    [switchButton setOn:YES];
    [switchButton addTarget:self action:@selector(switchAction:) forControlEvents:UIControlEventValueChanged];
    [self.view addSubview:switchButton];
   
 // Do any additional setup after loading the view, typically from a nib.
}

代碼中selector中的switchAction:需要我們自己實現,就是按下時接收到的事件。
記得把switchButton加到當前view,調用[self.viewaddSubview:switchButton];
3、監聽UISwitch按下事件
實現代碼如下:
復制代碼 代碼如下:

-(void)switchAction:(id)sender
{
    UISwitch *switchButton = (UISwitch*)sender;
    BOOL isButtonOn = [switchButton isOn];
    if (isButtonOn) {
        showSwitchValue.text = @"是";
    }else {
        showSwitchValue.text = @"否";
    }
}

showSwitchValue是我通過拖拽控件方法放到界面上的Label,方便顯示效果
運行,效果:

201511593652927.png (480×742)

二、通過拖拽方法使用UISwitch
1、往xib文件上拖拽一個UISwitch控件。

201511593730463.png (319×328)

2、按alt+command + return鍵開啟Assistant Editor模式,選中UISwitch控件,按住Control鍵,往ViewController.h拖拽

201511593748342.png (501×283)

3、選Action方式

201511593906872.png (252×193)

4、.m文件中實現switchAction 。剛才動態創建的時候也用到這個方法名稱,可以先注釋掉剛才的。

復制代碼 代碼如下:

- (IBAction)switchAction:(id)sender {
    UISwitch *switchButton = (UISwitch*)sender;
    BOOL isButtonOn = [switchButton isOn];
    if (isButtonOn) {
        showSwitchValue.text = @"是";
    }else {
        showSwitchValue.text = @"否";
    }
}

這里我們來看一下.m文件的源碼:
復制代碼 代碼如下:

#import "HMCustomSwitch.h"


@implementation HMCustomSwitch

@synthesize on;
@synthesize tintColor, clippingView, leftLabel, rightLabel;

+(HMCustomSwitch *)switchWithLeftText:(NSString *)leftText andRight:(NSString *)rightText
{
 HMCustomSwitch *switchView = [[HMCustomSwitch alloc] initWithFrame:CGRectZero];
 
 switchView.leftLabel.text = leftText;
 switchView.rightLabel.text = rightText;
 
 return [switchView autorelease];
}

-(id)initWithFrame:(CGRect)rect
{
 if ((self=[super initWithFrame:CGRectMake(rect.origin.x,rect.origin.y,95,27)]))
 {
  //  self.clipsToBounds = YES;
  
  [self awakeFromNib];  // do all setup in awakeFromNib so that control can be created manually or in a nib file
 }
 return self;
}

-(void)awakeFromNib
{
 [super awakeFromNib];
 
 self.backgroundColor = [UIColor clearColor];

 [self setThumbImage:[UIImage imageNamed:@"switchThumb.png"] forState:UIControlStateNormal];
 [self setMinimumTrackImage:[UIImage imageNamed:@"switchBlueBg.png"] forState:UIControlStateNormal];
 [self setMaximumTrackImage:[UIImage imageNamed:@"switchOffPlain.png"] forState:UIControlStateNormal];
 
 self.minimumValue = 0;
 self.maximumValue = 1;
 self.continuous = NO;
 
 self.on = NO;
 self.value = 0.0;
 
 self.clippingView = [[UIView alloc] initWithFrame:CGRectMake(4,2,87,23)];
 self.clippingView.clipsToBounds = YES;
 self.clippingView.userInteractionEnabled = NO;
 self.clippingView.backgroundColor = [UIColor clearColor];
 [self addSubview:self.clippingView];
 [self.clippingView release];
 
 NSString *leftLabelText = NSLocalizedString(@"ON","Custom UISwitch ON label. If localized to empty string then I/O will be used");
 if ([leftLabelText length] == 0) 
 {
  leftLabelText = @"l";  // use helvetica lowercase L to be a 1.
 }
 
 self.leftLabel = [[UILabel alloc] init];
 self.leftLabel.frame = CGRectMake(0, 0, 48, 23);
 self.leftLabel.text = leftLabelText;
 self.leftLabel.textAlignment = NSTextAlignmentCenter;
 self.leftLabel.font = [UIFont boldSystemFontOfSize:17];
 self.leftLabel.textColor = [UIColor whiteColor];
 self.leftLabel.backgroundColor = [UIColor clearColor];
 //  self.leftLabel.shadowColor = [UIColor redColor];
 //  self.leftLabel.shadowOffset = CGSizeMake(0,0);
 [self.clippingView addSubview:self.leftLabel];
 [self.leftLabel release];
 
 
 NSString *rightLabelText = NSLocalizedString(@"OFF","Custom UISwitch OFF label. If localized to empty string then I/O will be used");
 if ([rightLabelText length] == 0) 
 {
  rightLabelText = @"O"; // use helvetica uppercase o to be a 0.
 }
 
 self.rightLabel = [[UILabel alloc] init];
 self.rightLabel.frame = CGRectMake(95, 0, 48, 23);
 self.rightLabel.text = rightLabelText;
 self.rightLabel.textAlignment = NSTextAlignmentCenter;
 self.rightLabel.font = [UIFont boldSystemFontOfSize:17];
 self.rightLabel.textColor = [UIColor grayColor];
 self.rightLabel.backgroundColor = [UIColor clearColor];
 //  self.rightLabel.shadowColor = [UIColor redColor];
 //  self.rightLabel.shadowOffset = CGSizeMake(0,0);
 [self.clippingView addSubview:self.rightLabel];
 [self.rightLabel release];
 
 
}

-(void)layoutSubviews
{
 [super layoutSubviews];
 
 // NSLog(@"leftLabel=%@",NSStringFromCGRect(self.leftLabel.frame));
 
 // move the labels to the front
 [self.clippingView removeFromSuperview];
 [self addSubview:self.clippingView];
 
 CGFloat thumbWidth = self.currentThumbImage.size.width;
 CGFloat switchWidth = self.bounds.size.width;
 CGFloat labelWidth = switchWidth - thumbWidth;
 CGFloat inset = self.clippingView.frame.origin.x;
 
 // NSInteger xPos = self.value * (self.bounds.size.width - thumbWidth) - (self.leftLabel.frame.size.width - thumbWidth/2);
 NSInteger xPos = self.value * labelWidth - labelWidth - inset;
 self.leftLabel.frame = CGRectMake(xPos, 0, labelWidth, 23);
 
 // xPos = self.value * (self.bounds.size.width - thumbWidth) + (self.rightLabel.frame.size.width - thumbWidth/2);
 xPos = switchWidth + (self.value * labelWidth - labelWidth) - inset;
 self.rightLabel.frame = CGRectMake(xPos, 0, labelWidth, 23);
 
 // NSLog(@"value=%f    xPos=%i",self.value,xPos);
 // NSLog(@"thumbWidth=%f    self.bounds.size.width=%f",thumbWidth,self.bounds.size.width);
}

- (UIImage *)image:(UIImage*)image tintedWithColor:(UIColor *)tint

 
    if (tint != nil)
 {
  UIGraphicsBeginImageContext(image.size);
  
  //draw mask so the alpha is respected
  CGContextRef currentContext = UIGraphicsGetCurrentContext();
  CGImageRef maskImage = [image CGImage];
  CGContextClipToMask(currentContext, CGRectMake(0, 0, image.size.width, image.size.height), maskImage);
  CGContextDrawImage(currentContext, CGRectMake(0,0, image.size.width, image.size.height), image.CGImage);
  
  [image drawAtPoint:CGPointMake(0,0)];
  [tint setFill];
  UIRectFillUsingBlendMode(CGRectMake(0,0,image.size.width,image.size.height),kCGBlendModeColor);
  UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
  UIGraphicsEndImageContext();
  
        return newImage;
    }
    else
 {
        return image;
    }
}

-(void)setTintColor:(UIColor*)color
{
 if (color != tintColor)
 {
  [tintColor release];
  tintColor = [color retain];
  
  [self setMinimumTrackImage:[self image:[UIImage imageNamed:@"switchBlueBg.png"] tintedWithColor:tintColor] forState:UIControlStateNormal];
 }
 
}

- (void)setOn:(BOOL)turnOn animated:(BOOL)animated;
{
 on = turnOn;
 
 if (animated)
 {
  [UIView  beginAnimations:nil context:nil];
  [UIView setAnimationDuration:0.2];
 }
 
 if (on)
 {
  self.value = 1.0;
 }
 else
 {
  self.value = 0.0;
 }
 
 if (animated)
 {
  [UIView commitAnimations]; 
 }
}

- (void)setOn:(BOOL)turnOn
{
 [self setOn:turnOn animated:NO];
}


- (void)endTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event
{
 NSLog(@"preendTrackingWithtouch");
 [super endTrackingWithTouch:touch withEvent:event];
 NSLog(@"postendTrackingWithtouch");
 m_touchedSelf = YES;
 
 [self setOn:on animated:YES];
}

- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event
{
 [super touchesBegan:touches withEvent:event];
  NSLog(@"touchesBegan");
 m_touchedSelf = NO;
 on = !on;
}

- (void)touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event
{
 [super touchesEnded:touches withEvent:event];
 NSLog(@"touchesEnded");
 
 if (!m_touchedSelf)
 {
  [self setOn:on animated:YES];
  [self sendActionsForControlEvents:UIControlEventValueChanged];
 }
}

-(void)dealloc
{
 [tintColor release];
 [clippingView release];
 [rightLabel release];
 [leftLabel release];
 
 [super dealloc];
}

@end


看代碼可以知道,其實它是通過繼承UISlider控件實現的,UISlider的左右分別是個UILabel,當YES的時候,滑塊滑到了最右邊,NO的時候滑到了最左邊。
所以在代碼中使用它呢?這里再舉一個例子:
復制代碼 代碼如下:

- (void)loadView
{
 UIView *contentView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
 self.view = contentView;
 contentView.backgroundColor = [UIColor whiteColor];
 
 // Standard ON/OFF
 HMCustomSwitch *switchView = [[HMCustomSwitch alloc] initWithFrame:CGRectZero];
 switchView.center = CGPointMake(160.0f, 20.0f);
 switchView.on = YES;
 [contentView addSubview:switchView];
 [switchView release];
 
 // Custom YES/NO
 switchView = [HMCustomSwitch switchWithLeftText:@"YES" andRight:@"NO"];
 switchView.center = CGPointMake(160.0f, 60.0f);
 switchView.on = YES;
 [contentView addSubview:switchView];
 
 // Custom font and color
 switchView = [HMCustomSwitch switchWithLeftText:@"Hello " andRight:@"ABC "];
 switchView.center = CGPointMake(160.0f, 100.0f);
 switchView.on = YES;
 [switchView.leftLabel setFont:[UIFont boldSystemFontOfSize:13.0f]];
 [switchView.rightLabel setFont:[UIFont italicSystemFontOfSize:15.0f]];
 [switchView.rightLabel setTextColor:[UIColor blueColor]];
 [contentView addSubview:switchView];
 
 // Multiple lines
 switchView = [HMCustomSwitch switchWithLeftText:@"Hello/nWorld" andRight:@"Bye/nWorld"];
 switchView.center = CGPointMake(160.0f, 140.0f);
 switchView.on = YES;
 switchView.tintColor = [UIColor orangeColor];
 switchView.leftLabel.font = [UIFont boldSystemFontOfSize:9.0f];
 switchView.rightLabel.font = [UIFont boldSystemFontOfSize:9.0f];
 switchView.leftLabel.numberOfLines = 2;
 switchView.rightLabel.numberOfLines = 2;
 switchView.leftLabel.lineBreakMode = NSLineBreakByWordWrapping;
 switchView.rightLabel.lineBreakMode = NSLineBreakByWordWrapping;
 [contentView addSubview:switchView];
 
 switchView = [[HMCustomSwitch alloc] init];
 switchView.center = CGPointMake(160.0f, 180.0f);
 switchView.on = YES;
 switchView.tintColor = [UIColor purpleColor];
 [contentView addSubview:switchView];
 [switchView release];
 
 switchView = [HMCustomSwitch switchWithLeftText:@"l" andRight:@"O"];
 switchView.center = CGPointMake(160.0f, 220.0f);
// customSwitch.tintColor = [UIColor colorWithRed:125.f/255.f green:157.f/255.f blue:93.f/255.f alpha:1.0];
// customSwitch.tintColor = [UIColor colorWithRed:125.f/255.f green:157.f/255.f blue:93.f/255.f alpha:1.0];
 [contentView addSubview:switchView];

 // Standard ON/OFF
 switchView = [[HMCustomSwitch alloc] init];
 switchView.center = CGPointMake(160.0f, 260.0f);
 switchView.tintColor = [UIColor colorWithRed:125.f/255.f green:157.f/255.f blue:93.f/255.f alpha:1.0];
 [switchView addTarget:self action:@selector(switchFlipped:) forControlEvents:UIControlEventValueChanged];
 [contentView addSubview:switchView];
 [switchView release];
 
 
 
 UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 420, 320, 40)];
 toolbar.tintColor = [UIColor colorWithRed:125.f/255.f green:157.f/255.f blue:93.f/255.f alpha:1.0];
 [contentView addSubview:toolbar];
 
 [contentView release];
}

-(void)switchFlipped:(HMCustomSwitch*)switchView
{
 NSLog(@"switchFlipped=%f  on:%@",switchView.value, (switchView.on?@"Y":@"N"));
 
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久精品国产精品亚洲| 久久久久久久999| 日产日韩在线亚洲欧美| 日本亚洲欧美三级| 久久久www成人免费精品张筱雨| 国产偷国产偷亚洲清高网站| 久久久中文字幕| 亚洲一区av在线播放| 久久影视电视剧免费网站清宫辞电视| 国产一区二区精品丝袜| 亚洲老板91色精品久久| 欧美成人午夜影院| 久久精品国产亚洲精品| 欧美wwwwww| 亚洲精品电影网| 国内精品模特av私拍在线观看| 国产免费一区视频观看免费| 欧美成人国产va精品日本一级| 欧美猛交ⅹxxx乱大交视频| 中文字幕在线视频日韩| 亚洲欧美成人一区二区在线电影| 欧美色图在线视频| 亚洲人成电影在线播放| 日韩成人av一区| 色悠悠久久88| 亚洲国产天堂网精品网站| 国产午夜精品理论片a级探花| 国产91成人在在线播放| 97国产suv精品一区二区62| 日韩欧美亚洲一二三区| 主播福利视频一区| 在线成人中文字幕| 国产亚洲美女久久| 色悠久久久久综合先锋影音下载| 日韩性生活视频| 亚洲欧美激情视频| 亚洲欧洲自拍偷拍| 日韩精品在线影院| 精品magnet| 欧美床上激情在线观看| 国产日韩欧美中文| 日韩亚洲成人av在线| 国产精品视频中文字幕91| 在线午夜精品自拍| 久久免费视频观看| 久热精品视频在线观看一区| 久久精品国产一区| 色婷婷久久一区二区| 这里只有精品在线播放| 黑人精品xxx一区一二区| 色中色综合影院手机版在线观看| 久久人人爽人人爽人人片av高清| 日韩精品免费综合视频在线播放| 国产精品美女视频网站| 国产精品影片在线观看| 久久久噜噜噜久久中文字免| 亚洲国模精品一区| 欧美综合在线第二页| 一本色道久久88亚洲综合88| 精品国产依人香蕉在线精品| 91精品中文在线| 日韩精品免费电影| 亚洲欧美日韩精品久久亚洲区| 91亚洲国产成人久久精品网站| 久久69精品久久久久久久电影好| 91精品国产高清久久久久久| 国产成人综合精品在线| 中文字幕国产亚洲2019| 亚洲欧美日韩中文在线| 久久精品视频va| 久久人91精品久久久久久不卡| 久久人人爽人人爽人人片亚洲| 国产精品户外野外| 日韩精品久久久久久久玫瑰园| 国产欧美一区二区白浆黑人| 成人网在线观看| 午夜精品蜜臀一区二区三区免费| 国产视频在线观看一区二区| 欧美大片欧美激情性色a∨久久| 国产999精品视频| 国产免费一区二区三区在线观看| 在线亚洲欧美视频| 国语自产精品视频在线看| 久久久视频在线| 久久夜色精品亚洲噜噜国产mv| 欧洲成人性视频| 欧美日本亚洲视频| 九九热这里只有精品免费看| 中国日韩欧美久久久久久久久| 欧美专区日韩视频| 亚洲人成网站999久久久综合| 色777狠狠综合秋免鲁丝| 91在线无精精品一区二区| 亚洲美女中文字幕| 日韩高清中文字幕| 日韩欧美第一页| 97视频在线观看网址| 欧美日韩美女在线| 国产欧美日韩精品专区| 久久69精品久久久久久久电影好| 日韩欧美精品网站| 日本久久久久久久| 亚洲精品美女网站| 亚洲xxxx在线| 亚洲性无码av在线| 亚洲欧洲在线看| 国产一区二区三区三区在线观看| 欧美肥老太性生活视频| 欧美性生交大片免网| 欧美激情久久久久| 亚洲小视频在线| 成人黄色生活片| 亚洲免费人成在线视频观看| 色妞色视频一区二区三区四区| 92裸体在线视频网站| 久久精品视频播放| 亚洲精品视频网上网址在线观看| 亚洲美女av在线播放| 日本一区二区三区四区视频| 久久久久久久久久久久久久久久久久av| 日韩在线精品一区| 一级做a爰片久久毛片美女图片| 欧美自拍大量在线观看| 国产精品久久久久高潮| 日韩高清电影免费观看完整版| 国产精品黄视频| 91久久久久久久久久久久久| 97在线日本国产| 亚洲第一男人天堂| 高跟丝袜一区二区三区| 亚洲精品aⅴ中文字幕乱码| 亚洲美女中文字幕| 亚洲欧美视频在线| 国产成人精品免高潮在线观看| 久久综合免费视频影院| 免费成人高清视频| 97视频在线免费观看| 亚洲香蕉成人av网站在线观看| 国产成人高潮免费观看精品| 国产亚洲视频中文字幕视频| 视频直播国产精品| 日韩视频精品在线| 欧美一级黄色网| 久久人91精品久久久久久不卡| 日韩黄色在线免费观看| 国产性猛交xxxx免费看久久| 国产精品黄色av| 国产精品美女久久| 中文字幕亚洲第一| 精品视频在线观看日韩| 国内偷自视频区视频综合| 美女视频黄免费的亚洲男人天堂| 欧美精品精品精品精品免费| 色系列之999| 粗暴蹂躏中文一区二区三区| 国内精品久久久久久影视8| 国产在线精品成人一区二区三区| 亚洲第一精品夜夜躁人人躁| 日本精品免费一区二区三区| 成人av.网址在线网站| 性夜试看影院91社区| 国产成人精品一区二区三区| 在线观看中文字幕亚洲| 国产91精品黑色丝袜高跟鞋|