1. 程式人生 > >iOS開發入門例項

iOS開發入門例項

#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

相關推薦

iOS開發入門例項

#import "HMCustomSwitch.h" @implementation HMCustomSwitch @synthesize on; @synthesize tintColor, clippingView, leftLabel, rightLabel; +(HMCustomSwitch

opendaylight-Boron-SR3開發入門例項

開發環境搭建: 開發環境配置如下: 1) 64位ubuntu16.04系統,4G以上記憶體, 16G以上硬碟剩餘空間 2) JDK8, maven-3.5.0(原始碼安裝) 3) 環境變數設定(gedit /etc/profile和source /etc/profile) e

IOS開發入門之一——Swift語言基礎

    需要iOS視訊資料可以加我微信: 1914532832  驗證資訊請註明:IOS開發     很多新人對IOS開發很迷茫,不知道從何下手?看完本系列,你將會覺得IOS入門其實很簡單。要學習IOS開發,當然是先學習Swift語言,特別是小白,你連基本的程式碼都

5個月iOS開發入門總結(C++轉行iOS

前言:一個人寫的ios轉行總結,思路很清晰,值得學習 原文網址:http://www.cocoachina.com/bbs/read.php?tid-332587.html 囉嗦(請跳過)8月5號左右突然做出了來北京工作的決定,給北京同學瞭解情況時正好同學公司缺人,7號來

第一章 ios開發入門

1.1    iOS開發必要條件 1.1.1 iOS開發的軟硬體環境 硬體開發環境:Mac電腦,ios裝置(可選 ) 軟體開發環境:OS X,Xcode 1.1.2 iOS平臺開發語言 Objective c  1.1.3 MVC模式簡式<框架模式,設計模式>

Android開發入門例項:四則混合運算計算器

        開發Android應用主要使用的語言是Java,佈局檔案和介面則一般用XML來描述。整個應用的GUI開發與Java SWT、QT等其實區別不是特別大。如果有任何一種GUI程式開發經驗,學習Android應用開發就是一件非常容易的事。這篇文章裡我們來開發一個支

IOS開發入門之六——storyboard的使用(中)

    需要iOS開發視訊資料可以加我微信: 1914532832  驗證資訊請註明:IOS開發       上節我們瞭解了使用storyboard如何在單個頁面上放置檢視,並且設定這些檢視的屬性、位置約束等使之達到我們設計的效果。需要了解的人請點選"IOS開發入門之五——

移動開發入門必看——iOS 開發入門書籍推薦

整理了一些iOS 開發入門級別的書籍推薦給大家,每本都是很經典的著作,對於初學者來說是很值得一看的學習資料,希望能幫到大家! 本書將帶你走上建立iOS應用程式的大道。 我們的目標是讓你通過初步學習,理解iOS應用程式的執行和構建方式。在學習過程中,你將建

0基礎學IOS開發怎樣入門

主機 咨詢 開源 閱讀 關註 論壇 優勢 難學 c語言 1 、信念。 很大程度上,學iOS就是一個信念的事情。iOS開發本身不難學,不需要你有很高的智力,只需要你能夠堅持下去。只要你心中有信念,堅持下去就會有收獲。不管你是學哪一種編程語言,不用懷疑你能不能學會,只要你肯下工

ios開發之Swift新手入門

間距 cati rmi article ride edit ner .com 設置 1、關於swift和調試,swift在ios7.0才支持,ios8.3系統的真機必需要xcode6.3才幹調試。安裝xcode6.3需要os x 10.10以上 2、應用程序由Main.

iOS開發-OpenGL ES入門教程1

貼圖 iba 細節 con osi tutorial name rip tex http://www.jianshu.com/p/750fde1d8b6a 這裏是一篇新手教程,環境是Xcode7+OpenGL ES 2.0,目標寫一個OpenGL ES的hello wor

Android開發入門經典例項

開發例項概述 今天帶大家做一個簡單的Android App,這個App會顯示創新工程實踐老師們的照片和資訊,不妨先看一看效果: 雖然這個App非常簡單,但是涉及到了Android開發中的一些關鍵知識,比如: 配置開發環境 App中一個螢幕的抽象:Activity

EJB 開發環境與入門例項

文章目錄 1.環境準備 2.WildFly 介紹 下載 配置與啟動 3. EJB 服務建立 4.客戶端呼叫

iOS SDK開發入門姿勢詳解

1、建立workspace 兩張圖搞定的事情,就不寫了。 ① 開啟Xcode,左上角 File--> New --> Workspace. ② 建立一個資料夾,用來存放我們生成的檔案,成功之後如下。 2、建立SDK 也是,我們幾張圖來搞定 ① Xcode左上角 File -&

iOS開發-植入廣告 iAd Admob例項

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!                應用中植入廣告是一種很好的盈利手段。下面介紹主流的兩種方法。iAd, Admob一。iAd1.需要加入iAd.framework2.   .h檔案加入如下程式碼

IOS 初級開發入門教程(二)第一個HelloWorld工程及StoryBoard使用

前言 在IOS開發之路的博文第一章:(IOS開發入門介紹http://blog.csdn.net/csdn_aiyang)我大致系統介紹了有關IOS的一些基礎認識,如果不完全都記住沒關係,以後我們開發之路還很長,慢慢的自然而然就明白是怎麼回事了。這一篇我將手把手教大家完成第

例項-0基礎微信小程式開發入門1.2-【第一個小程式】

【開啟征程】開啟微信web開發者工具,點選小程式專案:點選右下角的“+”號,將建立快速模板前面的勾去掉然後選擇體驗小程式,目錄隨意,點選確定,即可建立一個全空的小程式專案啦。【建立最基本的目錄結構和檔案】在開始建立之前,我們有必要了解一下最基本的東西:​JSON 是一種資料格

Sagit.Framework For IOS 開發框架入門教程5:訊息彈窗STMsgBox

前言: 昨天剛寫了一篇IT連創業的文章:IT連創業系列:產品設計之答題模組,(歡迎大夥關注!) 感覺好久沒寫IOS的文章了,今天趁機,來補一篇,Sagit的教程。 今天主要是分享訊息彈窗功能,即STMsgBox的用法: STMsgBox為彈窗相關的功能的原始碼。 1、對外API功能呼叫說明:

Sagit.Framework For IOS 開發框架入門教程6:網路請求STHttp

前言: IOS的文章,今天,再來補一篇,Sagit的教程; 雖然感覺IOS的文章沒什麼觀眾,還是努力寫吧,-_-〜 今天主要是分享網路請求,即STHttp的用法: STHttp為處理網路API請求的功能的原始碼。 1、對外API功能呼叫說明: 對於網路請求,Sagit目前是對AFNetwo

iOS開發60分鐘入門

本文面向已有其它語言(如Java,C,PHP,Javascript)程式設計經驗的iOS開發初學者,初衷在於讓我的同事一小時內瞭解如何開始開發iOS App,學習目標包括: 能使用Xcode IDE、模擬器 能修改、除錯已有iOS App 能在已有應用內建立新模組 能建立新應