国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

詳解iPhone SDK開發(fā)基礎(chǔ)之自定義儀表控件

移動(dòng)開發(fā) iOS
控件使用兩個(gè)UIView來(lái)實(shí)現(xiàn)儀表控件,并通過(guò)CGAffineTransform類來(lái)實(shí)現(xiàn)儀表指針的旋轉(zhuǎn),控件在UIDialView類中實(shí)現(xiàn),來(lái)看本文如何定義UIDialView類的。

iPhone SDK開發(fā)基礎(chǔ)之自定義儀表控件是本文要介紹的內(nèi)容,主要是來(lái)學(xué)習(xí)儀表控件。在iOS開發(fā)中,因?yàn)槌绦虻男枰袝r(shí)要自行繪制iPhone SDK沒有提供的界面控件,通常使用QuartzCore.framework即可畫出你所需要的各種圖形,在這里我們實(shí)現(xiàn)一個(gè)圓形的“儀表盤”控件,控件的外觀如圖3-48所示,用戶可以通過(guò)旋轉(zhuǎn)儀表控件的指針來(lái)設(shè)置程序需要的各種系統(tǒng)參數(shù),如圖所示:

詳解iPhone SDK開發(fā)基礎(chǔ)之自定義儀表控件

控件使用兩個(gè)UIView來(lái)實(shí)現(xiàn)儀表控件,并通過(guò)CGAffineTransform類來(lái)實(shí)現(xiàn)儀表指針的旋轉(zhuǎn),控件在UIDialView類中實(shí)現(xiàn),UIDialView類的定義如下。

  1. //  UIDialView.h  
  2. #import <UIKit/UIKit.h> 
  3.  
  4. @protocol UIDialViewDelegate  
  5. @optional  
  6. - (void)dialValue:(int)tag Value:(float)value;  
  7. @end  
  8.  
  9. @interface UIDialView : UIView {  
  10.  id<UIDialViewDelegate> delegate;  
  11.  NSTimer *timer;  
  12.  UIImageView *iv;  
  13.  float maxValue,minValue;  
  14.  CGAffineTransform initialTransform ;  
  15.  float currentValue;  
  16. }  
  17. @property(nonatomic,assign)id<UIDialViewDelegate>delegate;  
  18. @property CGAffineTransform initialTransform;  
  19. @property float currentValue;  
  20.  
  21. @end 

在UIDialView類的實(shí)現(xiàn)文件中,通過(guò)init()方法讀取圖片文件初始化控件背景和指針,代碼如下。

  1. //  UIDialView.m  
  2. #import "UIDialView.h"  
  3.  
  4. @interface  
  5.  
  6. UIDialView()  
  7. -(void)spin:(NSTimer *)timer;  
  8. -(float) goodDegrees:(float)degrees;  
  9. @end  
  10.  
  11. #define degreesToRadians(degrees) (M_PI * degrees / 180.0)  
  12. #define radiansToDegrees(radians) (radians * 180 / M_PI)  
  13.  
  14. static CGPoint delta;  
  15. static float deltaAngle;  
  16. static float currentAngle;  
  17.  
  18. @implementation UIDialView  
  19. @synthesize initialTransform,currentValue;  
  20.  
  21. - (void)dealloc {  
  22.  [iv release];  
  23.     [super dealloc];  
  24. }  
  25.  
  26. @synthesize  
  27.  
  28. delegate;  
  29.  
  30. - (id)init{  
  31.     if ((self = [super init])) {  
  32.     
  33.   self.userInteractionEnabled = YES;  
  34.   iv =[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"knob. png"]];  
  35.     
  36.   UIImage *backgroundTile = [UIImage imageNamed: @"clock.png"];  
  37.   UIColor *backgroundPattern = [[UIColor alloc] initWithPatternImage: backgroundTile];  
  38.   self.contentMode = UIViewContentModeCenter;  
  39.   [self setBackgroundColor:backgroundPattern];  
  40.   [backgroundPattern release];    
  41.     
  42.   iv.backgroundColor = [UIColor clearColor];   
  43.   iv.autoresizesSubviewsYES;    
  44.   self.frame = CGRectMake(0, 0, iv.frame.size.width, iv.frame.size. height);  
  45.     
  46.   [self addSubview:iv];    
  47.   [self bringSubviewToFront:iv];  
  48.   [iv release];  
  49.     
  50.   currentValue = 0;  
  51.   currentAngle = 0;   
  52.   deltaAngle = 0.0;    
  53.  }  
  54.     return self;  

在UIView的touchesBegan()方法中捕獲用戶Touch點(diǎn)的位置,并根據(jù)此位置使用atan2()函數(shù)計(jì)算出控件的初始化角度,代碼如下。

  1. - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{  
  2.  UITouch *thisTouch = [touches anyObject];  
  3.  delta = [thisTouch locationInView:self];  
  4.    
  5.  float dx = delta.x  - iv.center.x;  
  6.  float dy = delta.y  - iv.center.y;  
  7.  deltaAngle = atan2(dy,dx);  
  8.  initialTransform = iv.transform;  

在用戶的旋轉(zhuǎn)過(guò)程中通過(guò)設(shè)置指針UIView對(duì)象的transform屬性實(shí)現(xiàn)儀表控件指針伴隨用戶手指的旋轉(zhuǎn)而旋轉(zhuǎn),代碼如下。

  1. - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{  
  2.  UITouch *touch = [touches anyObject];  
  3.  CGPoint pt = [touch locationInView:self];  
  4.    
  5.  float dx = pt.x  - iv.center.x;  
  6.  float dy = pt.y  - iv.center.y;  
  7.  float ang = atan2(dy,dx);  
  8.     
  9.  if (deltaAngle == 0.0) {  
  10.   deltaAngle = ang;  
  11.   initialTransform = iv.transform;    
  12.  }else{  
  13.   float angleDif = deltaAngle - ang;  
  14.   CGAffineTransform newTrans = CGAffineTransformRotate(initialTransform, -angleDif);  
  15.   iv.transform = newTrans;  
  16.  
  17.   float diffValue = [self goodDegrees:radiansToDegrees(angleDif)];    
  18.   currentValue = maxValue - ((maxValue - minValue)/300)*diffValue;  
  19.   if(currentValue > 100) currentValue = 100;  
  20.  }   
  21.  if (delegate != nil) {  
  22.   [delegate dialValue:self.tag Value:currentValue];  
  23.  }  

客戶通過(guò)實(shí)現(xiàn)UIDialViewDelegate接口協(xié)議的dialValue()方法而得到控件的通知消息,代碼如下。

  1. //  DialViewController.h  
  2. #import <UIKit/UIKit.h> 
  3. #import "UIDialView.h"  
  4.  
  5. @interface  
  6.  
  7. DialViewController : UIViewController< UIDialViewDelegate> {  
  8.    UIDialView *dialView;  
  9.    UILabel *myLabel;  
  10. }  
  11.  
  12. - (void)dialValue:(int)tag Value:(float)value{  
  13.  NSString *str = [NSString stringWithFormat:@"%.1f",v*100];  
  14.     [myLabel performSelector:@selector(setText:) withObject:str];  

小結(jié):詳解iPhone SDK開發(fā)基礎(chǔ)之自定義儀表控件的內(nèi)容介紹完了,希望通過(guò)本文的的學(xué)習(xí)能對(duì)你有所幫助!

責(zé)任編輯:zhaolei 來(lái)源: 博客園
相關(guān)推薦

2009-08-06 09:18:01

ASP.NET自定義控ASP.NET控件開發(fā)

2009-08-06 17:52:45

ASP.NET控件開發(fā)自定義控件

2011-08-02 11:17:13

iOS開發(fā) View

2009-06-08 20:13:36

Eclipse自定義控

2009-08-07 11:12:58

ASP.NET控件開發(fā)

2011-04-19 10:33:16

ASP.NET自定義控

2011-07-18 14:39:53

iPhone SDK UIKit

2015-02-11 17:49:35

Android源碼自定義控件

2013-05-20 17:33:44

Android游戲開發(fā)自定義View

2011-08-18 09:52:13

iPhone SDKUIPageContr

2011-08-18 10:02:47

iPhone SDKOpenFlow

2011-07-05 18:51:51

QT 控件 鼠標(biāo)

2011-08-11 11:51:07

iPhone鍵盤

2021-08-25 10:14:51

鴻蒙HarmonyOS應(yīng)用

2021-08-16 14:45:38

鴻蒙HarmonyOS應(yīng)用

2009-07-28 09:32:41

ASP.NET自定義控

2013-04-19 10:14:24

2011-08-12 18:18:03

iPhone開發(fā)UIPageContr按鈕

2011-07-18 09:35:29

iPhone 框架

2009-07-31 10:23:09

ASP.NET源碼DateTimePic
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

久久精品国产亚洲aⅴ| 深夜福利视频一区二区| 日本电影一区二区| 亚洲精品xxxx| 三级黄色网址| 国产乱子伦一区二区三区国色天香| 欧美性做爰毛片| 国产拍在线视频| 精品国产91乱高清在线观看| 中国一区二区三区| 欧美视频在线观看| 欧美激情视频播放| 亚洲国产欧美日本视频| 日韩欧美中文字幕在线观看 | 国模吧视频一区| 国产日本欧美一区| 久久9999免费视频| 日韩最新av在线| 免费成人在线电影| 亚洲精品福利视频| 任你弄在线视频免费观看| 亚洲成av人综合在线观看| 国产特级嫩嫩嫩bbb| 亚洲男人天堂av| 网上成人av| 亚洲欧洲av色图| 天天影视色香欲综合网天天录日日录| 成人免费视频视频在线观看免费| 日韩免费av电影| 精彩视频一区二区三区| 久久这里只有精品18| 不卡的av网站| 欧美激情视频免费看| 性国裸体高清亚洲| 精品国一区二区三区| 亚洲色图丝袜| 2022亚洲天堂| 日韩精品免费电影| 日韩电影在线免费看| 欧美成人精品一区二区男人看| 亚洲a级在线观看| 欧美在线观看一区| 日韩精品一区二区三区免费观看| 男女午夜激情视频| 色悠悠久久久久| 成人美女视频在线观看18| 日本在线视频www鲁啊鲁| 久久成人18免费观看| 久久精品国产在热久久| 男人天堂成人在线| 欧美日韩中文字幕精品| 日韩精品麻豆| 久久精彩视频| 欧美色视频一区| 欧美禁忌电影| 黄色一级片播放| 久久九九影视网| 日韩电影天堂视频一区二区| 国产精品国产自产拍高清av | 国产成人精品在线观看| 一区二区视频在线播放| 久久机这里只有精品| 欧美性受黑人性爽| 国产麻豆精品在线观看| 小香蕉视频在线| 欧美一区二区在线不卡| 亚洲资源在线| 农村寡妇一区二区三区| 久久综合丝袜日本网| 免费在线看v| 欧美日韩国产精品自在自线| 电影一区二区三| 狠狠爱一区二区三区| 国产日韩欧美一区二区三区乱码| 啊啊啊啊啊好爽| 欧美变态tickle挠乳网站| 红杏一区二区三区| 成人午夜在线影院| 国产精品三级视频| 色先锋资源久久综合5566| 91免费黄视频| 麻豆高清免费国产一区| 精品美女在线观看视频在线观看 | 欧美成人dvd在线视频| 午夜精品久久| 国产精品最新在线观看| 欧美猛男男男激情videos| 欧美精品一区二区三区在线| 亚洲欧美日韩综合网| 不卡的av网站| 久久久久久免费看| 国产亚洲亚洲| 日本香蕉视频在线观看| 欧美韩日精品| 91探花福利精品国产自产在线| 精品国产免费久久| 超碰在线公开| 日韩精品专区在线| 欧美videosex性欧美黑吊| 欧美成人精品三级在线观看| 鲁大师精品99久久久| 自拍视频在线播放| 免费国产成人av| 2014亚洲精品| 国产色婷婷亚洲99精品小说| 国产剧情一区二区在线观看| 国内av免费| 91亚洲精品视频| 欧美日本视频在线| 窝窝社区一区二区| 嫩模私拍啪啪| 韩国成人动漫在线观看| 国产日韩欧美大片| 亚洲精品一区二区久| 伊人色综合久久天天人手人婷| 日本不卡在线视频| 亚洲人成精品久久久| 国产一级特黄a大片免费| 成人影院在线观看视频| 97热精品视频官网| 婷婷丁香激情综合| 美女视频一区在线观看| 香蕉久久夜色精品国产使用方法 | 国产中文欧美日韩在线| 日本中文字幕电影在线免费观看| av免费中文字幕| 国产在线精品一区二区三区| 亚洲人av在线影院| 欧美一区国产二区| 一区二区三区美女视频| 亚洲精品a级片| 久久久久久毛片免费看 | 男女羞羞电影免费观看| 奇米成人av国产一区二区三区| 亚洲欧美一区二区三区久久| 亚洲国产精品一区二区久久恐怖片| 五月精品视频| 欧美巨大xxxx| 一区二区三区国产好| 国产高清在线a视频大全| 欧美亚一区二区| 不卡电影一区二区三区| 青娱乐精品在线视频| 很黄很黄激情成人| 国产精品第一| 美女网站在线看| 成在在线免费视频| 日本在线观看免费视频| 可以看毛片的网址| 国产精品专区h在线观看| 色阁综合伊人av| 亚洲精品国产精品久久清纯直播| 精品视频999| 亚洲国产精品久久久久秋霞影院 | 在线欧美一区二区| 日本精品一区二区三区高清| 国产69精品久久777的优势| 韩国精品一区二区| 国产一区二区三区高清播放| 国产精品99久久久久久有的能看| 成人在线综合网| 国产精品麻豆欧美日韩ww| 国产精品美女久久久久aⅴ| 久久精品一区二区三区四区| 中文字幕制服丝袜一区二区三区 | 中文字幕9999| 《视频一区视频二区| 99视频精品全部免费在线视频| 日韩三级电影网| 国产精彩视频一区二区| 蜜桃传媒视频麻豆第一区免费观看 | 99久久国产宗和精品1上映| 在线免费观看羞羞视频一区二区| 蜜桃久久av| 忘忧草在线www成人影院| koreanbj精品视频一区| 亚洲在线一区二区| 欧美一级片在线看| 免费的国产精品| 亚洲va久久久噜噜噜久久| 国产激情在线视频| 蝌蚪视频在线播放| 日韩伦理片在线观看| 久热久精久品这里在线观看| 国产精品人人爽人人爽| 日韩成人午夜影院| 国产美女在线精品免费观看| 茄子视频成人在线观看 | 欧美福利电影网| 欧美日韩午夜视频在线观看| 91精品国产全国免费观看| 国产精品久久久久久亚洲调教| 丁香色欲久久久久久综合网| 青青青在线播放| 黄色日韩网站| 精品系列免费在线观看| 国产亚洲午夜高清国产拍精品| 亚洲视频在线免费看| 国产深夜精品福利| 欧美少妇性生活视频|