中文字幕第二一区_久久久久在线视频_精品国产自在现线看久久_亚洲精品一区二区三区电影网

產(chǎn)品分類(lèi)

當(dāng)前位置: 首頁(yè) > 傳感測(cè)量產(chǎn)品 > 工業(yè)傳感器 > 力傳感器

類(lèi)型分類(lèi):
科普知識(shí)
數(shù)據(jù)分類(lèi):
力傳感器

ios 重力傳感器:iOS 重力感應(yīng)之箭頭指向重力方向

發(fā)布日期:2022-10-09 點(diǎn)擊率:44


ios 重力傳感器:iOS 重力感應(yīng)之箭頭指向重力方向  第1張

ios 重力傳感器:iOS 重力感應(yīng)之箭頭指向重力方向

以屏幕的左下方為原點(diǎn)(2d編程的時(shí)候,是以屏幕左上方為原點(diǎn)的,這個(gè)值得注意一下),箭頭指向的方向?yàn)檎?從-10到10,以浮點(diǎn)數(shù)為等級(jí)單位,想象一下以下情形:手機(jī)屏幕向上(z軸朝天)水平放置的時(shí)侯,(x,y,z)的值分別為(0,0,10);手機(jī)屏幕向下(z軸朝地)水平放置的時(shí)侯,(x,y,z)的值分別為(0,0,-10);手機(jī)屏幕向左側(cè)放(x軸朝天)的時(shí)候,(x,y,z)的值分別為(10,0,0);手機(jī)豎直(y軸朝天)向上的時(shí)候,(x,y,z)的值分別為(0,10,0);其他的如此類(lèi)推,規(guī)律就是:朝天的就是正ios 重力傳感器:iOS 重力感應(yīng)之箭頭指向重力方向  第2張

ios 重力傳感器:IOS學(xué)習(xí)筆記-加速度傳感器(重力感應(yīng))-UIAccelerometer

@interface?DSViewController :?UIViewController?

{

//我們用一個(gè)label來(lái)表示隨加速度方向運(yùn)動(dòng)的小方塊

UILabel?*_label;

//x軸方向的速度

UIAccelerationValue?_speedX;

//y軸方向的速度

UIAccelerationValue?_speedY;

}

@end

?

@implementation?DSViewController

- (void)viewDidLoad

{

[super?viewDidLoad];

?

self.view.backgroundColor?= [UIColor?yellowColor];

CGRect?winRect = [UIScreen?mainScreen].applicationframe;

//實(shí)例化 隨加速度方向運(yùn)動(dòng)的小方塊(label)

_label?= [[UILabel?alloc]initWithframe:CGRectMake(0,?0,?80,?80)];

_label.center?=?CGPointMake(winRect.size.width?*?0.5, winRect.size.height?*?0.5);

_label.text?=?@"Droid";

_label.textAlignment?=?UITextAlignmentCenter;

_label.backgroundColor?= [UIColor?greenColor];

[self.view addSubview:_label];

[_label release];

}

-(void)viewWillAppear:(BOOL)animated

{

[super?viewWillAppear:animated];

//召喚加速度傳感器

UIAccelerometer?*accelerometer = [UIAccelerometer?sharedAccelerometer];

//設(shè)置加速度傳感器的 接收加速度通知的時(shí)間間隔

//設(shè)置為1.0/60.0表示一秒接收60次,可根據(jù)實(shí)際需求調(diào)整

accelerometer.updateInterval?=?1.0/60.0;

//下面這個(gè)不設(shè)置,代理方法就不會(huì)調(diào)用

accelerometer.delegate?=?self;

}

-(void)viewWillDisappear:(BOOL)animated

{

[super?viewWillDisappear:animated];

//不要忘了停止傳感器的工作

//結(jié)束加速度傳感器的工作

_speedX?=?_speedY?=?0;

UIAccelerometer?*accelerometer = [UIAccelerometer?sharedAccelerometer];

accelerometer.delegate?=?nil;

}

-(void)accelerometer:(UIAccelerometer?*)accelerometer didAccelerate:(UIAcceleration?*)acceleration

{

//獲得的加速度要考慮到加速度傳感器的原點(diǎn)是物理重心,而不是屏幕右上角

//x軸方向的速度加上x(chóng)軸方向獲得的加速度

_speedX?+= acceleration.x;

//y軸方向的速度加上y軸方向獲得的加速度

_speedY?+= acceleration.y;

//小方塊將要移動(dòng)到的x軸坐標(biāo)

CGFloat?posX =?_label.center.x?+?_speedX;

//小方塊將要移動(dòng)到的y軸坐標(biāo)

CGFloat?posY =?_label.center.y?-?_speedY;

//碰到屏幕邊緣反彈

if?(posX ?self.view.bounds.size.Width</span>){

posX =?self.view.bounds.size.Width</span>;

//碰到屏幕右邊以0.4倍的速度反彈

_speedX?*= -0.4;

}

if?(posY ?self.view.bounds.size.Height</span>){

posY =?self.view.bounds.size.Height</span>;

//碰到屏幕下邊以1.5倍的速度反彈

_speedY?*= -1.5;

}

//移動(dòng)小方塊

_label.center?=?CGPointMake(posX, posY);

}

@end

首尾呼應(yīng):加速度傳感器使用很easy有木有!

ios 重力傳感器:IOS的重力感應(yīng)

IOS的重力感應(yīng)

昨天寫(xiě)了重力感應(yīng)的例子,我覺(jué)得這個(gè)例子比較有用處,我分享出來(lái):
1 )顯然ios4 之后可以使用coreMotion的framework 為了向下兼容加上UIAccelerator,
[html]
#import

@end
CMMotionManager 將是我們使用的Object,可以用來(lái)監(jiān)測(cè)重力!
同時(shí),咱們不能在需要監(jiān)測(cè)重力感應(yīng)的地方直接使用這個(gè)類(lèi),這樣耦合比較嚴(yán)重,也不利于重用。所以抽離出來(lái),在代碼中您可以看到,我將定義一個(gè)signleton,同時(shí)將重力變化的事件回調(diào)給其代理。
2.接著往下是定義其函數(shù),這個(gè)很簡(jiǎn)單,直接貼代碼。
[html]
#import "IFAccelerometer.h"
static IFAccelerometer *accelerometerInstance=nil;
@implementation IFAccelerometer
+ (id)shareAccelerometer
{
if (!accelerometerInstance) {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
accelerometerInstance=[[[self class]alloc]init];
});
}
return accelerometerInstance;
}

- (id)init
{
self=[super init];
if (self) {
#ifdef __IPHONE_5_0
_motionManager=[[CMMotionManager alloc]init];
if (_motionManager.accelerometerAvailable) {
[_motionManager setAccelerometerUpdateInterval:1/60.f];
NSOperationQueue *operationQueue=[NSOperationQueue mainQueue];
[_motionManager startAccelerometerUpdatesToQueue:operationQueue withHandler:^(CMAccelerometerData *data,NSError *error)
{
if ([_delegate respondsToSelector:@selector(accelerateWithX:withY:withZ:withTimeInterval:)])
{
NSNumber *x =[NSNumber numberWithDouble:data.acceleration.x];
NSNumber *y =[NSNumber numberWithDouble:data.acceleration.y];
NSNumber *z =[NSNumber numberWithDouble:data.acceleration.z];
[_delegate accelerateWithX:x withY:y withZ:z withTimeInterval:data.timestamp];
}
}
];

}
#else
#ifdef __IPHONE_4_0
  _accelerometer=[UIAccelerometer sharedAccelerometer];
  [_accelerometer setUpdateInterval:(1/60.0f)];
  _accelerometer.delegate=self;
#endif
#endif

}
return self;
}

- (void)addOberser:(id)oberserer
{
_delegate=oberserer;
}

- (void)removeObserver
{
_delegate=nil;
}

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
{
if ([_delegate respondsToSelector:@selector(accelerateWithX:withY:withZ:withTimeInterval:)])
{
NSNumber *x =[NSNumber numberWithDouble:acceleration.x];
NSNumber *y =[NSNumber numberWithDouble:acceleration.y];
NSNumber *z =[NSNumber numberWithDouble:acceleration.z];
[_delegate accelerateWithX:x withY:y withZ:z withTimeInterval:acceleration.timestamp];
}

}
3.以ViewController 為例介紹如何使用重力感應(yīng)
[html]
- (void)viewDidLoad
{
[super viewDidLoad];
[[IFAccelerometer shareAccelerometer]addOberser:self];
_imageView=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"33.png"]];
_imageView.frame=CGRectMake(0, 0, KIMAGEWIDTH, KIMAGEHEIGHT);
_imageView.center=self.view.center;
[self.view addSubview:_imageView];

}
_imageView 是一個(gè)UIImageView的成員,其寬高是一個(gè)分別是我定義的宏。
注意,我在頭文件添加了重力感應(yīng)的代理,此時(shí)這行
[[IFAccelerometer shareAccelerometer]addOberser:self];
表明我在這個(gè)viewController中使用這個(gè)重力感應(yīng)的數(shù)據(jù)。
好,現(xiàn)在是完成回調(diào)的時(shí)候了,繼續(xù)貼代碼
[html]
- (void)accelerateWithX:(NSNumber *)x withY:(NSNumber *)y withZ:(NSNumber *)z withTimeInterval:(NSTimeInterval)timeInterval
{

float deceleration=0.4f;
float sensitivity =6.0f;
float maxVelocity =100.0f;

velocity.x=velocity.x * deceleration + [x doublevalue] * sensitivity;
velocity.y=velocity.y * deceleration + [y doublevalue] * sensitivity;

if(velocity.x > maxVelocity){
velocity.x=maxVelocity;
}else if(velocity.x < -maxVelocity){        velocity.x=-maxVelocity;    }        if(velocity.y > maxVelocity){
velocity.y=maxVelocity;
}else if(velocity.y < -maxVelocity){        velocity.y=-maxVelocity;    }        CGPoint pos=_imageView.center;    pos.x +=velocity.x;    pos.y -=velocity.y;        float imageWidthHalved=  KIMAGEWIDTH   * 0.5f;    float leftBorderLimit =0.0f;    float rightBorderLimit=0.0f;    if (imageWidthHalved>self.view.frame.size.width/2.0f) {
leftBorderLimit =   self.view.frame.size.width - imageWidthHalved;
rightBorderLimit=  imageWidthHalved;
}
else
{
leftBorderLimit =   imageWidthHalved ;
rightBorderLimit=  self.view.frame.size.width - imageWidthHalved;
}

float imageHeightHalved=KIMAGEHEIGHT * 0.5f;
float topBorderLimit   =0.0f;
float bottomBorderLimit=0.0f;
if (imageHeightHalved>self.view.frame.size.height/2.0f) {
topBorderLimit   =self.view.frame.size.height - imageHeightHalved;
bottomBorderLimit=  imageHeightHalved ;
}
else
{
topBorderLimit   =imageHeightHalved ;
bottomBorderLimit=self.view.frame.size.height - imageHeightHalved  ;
}

if(pos.x < leftBorderLimit){        pos.x=leftBorderLimit;        velocity=CGPointZero;    }else if(pos.x > rightBorderLimit){
pos.x=rightBorderLimit;
velocity=CGPointZero;
}

if(pos.y < topBorderLimit){        pos.y=topBorderLimit;        velocity=CGPointZero;    }else if(pos.y > bottomBorderLimit){
pos.y=bottomBorderLimit;
velocity=CGPointZero;
}

_imageView.center=pos;
}
上面是對(duì)于邊界的處理等等操作,都很簡(jiǎn)單,不一一介紹了。

相關(guān)文章暫無(wú)相關(guān)文章
ios 重力傳感器:iOS 重力感應(yīng)之箭頭指向重力方向  第3張

ios 重力傳感器:IOS重力感應(yīng)

iPhone和iPad設(shè)備有4個(gè)方向的狀態(tài),我們可以針對(duì)應(yīng)用當(dāng)前所處的方向調(diào)整界面。
為了使應(yīng)用支持不同的方向,首先我們需要在項(xiàng)目設(shè)置中設(shè)置設(shè)備支持的方向(也可以在項(xiàng)目的plist中設(shè)置)
Portrait  豎放,home鍵在屏幕下方
Upside Down  豎放,home鍵在屏幕上方
Landscape Left  橫放,home鍵在屏幕左方
Landscape Right  橫放,home鍵在屏幕右方

我們?cè)赟toryBoard中拖入一個(gè)新的ViewController,綁定好它的File's Owner,然后放入6個(gè)UIView,設(shè)置好不同的背景色

程序運(yùn)行后,我們?cè)谛D(zhuǎn)模擬器,發(fā)現(xiàn)在豎屏和橫屏狀態(tài)下,界面顯示如下
    

顯然橫屏狀態(tài)下這樣的顯示是不適合的,為了得到合適的顯示效果,我們需要在ViewController中寫(xiě)一些代碼。
首先我們先看一下在ViewController中和重力感應(yīng)相關(guān)的一些函數(shù)
- (BOOL)shouldAutorotate  
此函數(shù)返回YES表示此視圖控制器支持重力感應(yīng),返回NO表示此視圖控制器不支持重力感應(yīng)

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation  
此函數(shù)設(shè)置視圖控制器加載后最先顯示的方向,UIInterfaceOrientation是一個(gè)結(jié)構(gòu)體,支持的取值如下
UIInterfaceOrientationPortrait
UIInterfaceOrientationPortraitUpsideDown
UIInterfaceOrientationLandscapeLeft
UIInterfaceOrientationLandscapeRight

- (NSUInteger)supportedInterfaceOrientations
此函數(shù)設(shè)置視圖控制器支持的方向(需要shouldAutorotate返回YES),支持的取值如下
UIInterfaceOrientationMaskPortrait
UIInterfaceOrientationMaskLandscapeLeft
UIInterfaceOrientationMaskLandscapeRight
UIInterfaceOrientationMaskPortraitUpsideDown
UIInterfaceOrientationMaskLandscape
UIInterfaceOrientationMaskAll=(UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskPortraitUpsideDown)
UIInterfaceOrientationMaskAllButUpsideDown

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
用戶(hù)界面即將旋轉(zhuǎn)時(shí)觸發(fā)此函數(shù),toInterfaceOrientation表示即將到達(dá)的方向

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
用戶(hù)界面旋轉(zhuǎn)結(jié)束時(shí)觸發(fā)此函數(shù),fromInterfaceOrientation表示旋轉(zhuǎn)前的方向

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
用戶(hù)界面旋轉(zhuǎn)過(guò)程中觸發(fā)此函數(shù),一般在此函數(shù)中定制翻轉(zhuǎn)后控件的位置和大小

所以在上面那個(gè)實(shí)例中我們先將6個(gè)UIVIew控件連結(jié)到視圖控制器中,然后在willAnimateRotationToInterfaceOrientation:duration:中修改旋轉(zhuǎn)后的界面

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) {
self.view1.frame =CGRectMake(50, 20, 110, 130);
self.view2.frame =CGRectMake(225, 20, 110, 130);
self.view3.frame =CGRectMake(400, 20, 110, 130);

self.view4.frame =CGRectMake(50, 180, 110, 130);
self.view5.frame =CGRectMake(225, 180, 110, 130);
self.view6.frame =CGRectMake(400, 180, 110, 130);
}
}

上面代碼在旋轉(zhuǎn)到橫屏?xí)r修改view控件的位置,因?yàn)槲覀僺trobyboard中默認(rèn)布局了豎直狀態(tài)下的界面,所以在代碼中不需要重新布局view控件豎直狀態(tài)時(shí)的位置,但是如果我們是用編碼方式放置的控件,那么需要在上面代碼中添加一個(gè)else,設(shè)置豎屏后的界面。
    

下一篇: PLC、DCS、FCS三大控

上一篇: 電氣控制線路圖控制原

中文字幕第二一区_久久久久在线视频_精品国产自在现线看久久_亚洲精品一区二区三区电影网

      9000px;">

          性欧美大战久久久久久久久| 奇米综合一区二区三区精品视频 | 日韩免费电影网站| 国产亚洲精品bt天堂精选| 综合色天天鬼久久鬼色| 麻豆精品一区二区三区| 亚洲一区精品在线| 国产成人在线视频网站| 欧美日韩成人综合天天影院 | 国产成人午夜99999| 3d成人动漫网站| 亚洲免费观看高清完整版在线 | 97精品超碰一区二区三区| 国产日韩欧美不卡| 青青草视频一区| 正在播放亚洲一区| 亚洲欧美日韩中文播放| 欧美tickling网站挠脚心| 久久精品一区四区| 精品一区二区三区免费播放| 91精品国产综合久久久久| 一个色在线综合| 欧美又粗又大又爽| 亚洲一区在线看| 一区二区三区中文字幕在线观看| 国产91综合一区在线观看| 日本aⅴ亚洲精品中文乱码| 欧美视频一区在线| 亚洲国产一区二区三区| 在线观看区一区二| 日韩一区二区三区免费看 | 亚洲第一成人在线| 日本精品一级二级| 亚洲高清免费在线| 欧美精品乱码久久久久久| 亚洲成人免费影院| 国产精品理论片在线观看| 91精品国模一区二区三区| 成人综合日日夜夜| 麻豆成人在线观看| 亚洲电影一级黄| 一区在线播放视频| 国产喂奶挤奶一区二区三区| 欧美日本在线播放| 欧美曰成人黄网| 99精品在线观看视频| 精品成人一区二区| 美女爽到高潮91| 成人免费一区二区三区在线观看| 欧美日韩中文一区| 懂色av一区二区三区蜜臀| 奇米精品一区二区三区四区| 亚洲黄色小视频| 综合网在线视频| 国产欧美一区二区精品秋霞影院 | 日韩高清一区在线| 亚洲免费观看高清完整版在线观看| 久久精品欧美日韩| 久久久99精品免费观看不卡| 精品免费国产二区三区| 91精品国产免费| 91精品国产综合久久久久久久久久| 一本久道久久综合中文字幕 | 国产精品久久久久久久第一福利 | 日韩欧美成人午夜| 日韩欧美一区二区视频| 欧美一级免费大片| 欧美成人精精品一区二区频| 9191久久久久久久久久久| 欧美日韩一区高清| 欧美一卡2卡三卡4卡5免费| 日韩亚洲欧美高清| 国产亚洲精品免费| 欧美美女直播网站| 国产大陆亚洲精品国产| 国产成人在线电影| av成人老司机| 欧美日韩一区二区不卡| 欧美精品丝袜中出| 精品久久久久久久久久久久久久久 | 国产精品2024| av中文字幕在线不卡| 色综合网色综合| 欧美日韩三级一区二区| 在线成人高清不卡| 欧美成人vps| 亚洲欧洲精品一区二区三区| 亚洲欧美中日韩| 天天免费综合色| 国产精品一线二线三线精华| 成人性生交大片免费看中文 | 久久综合国产精品| 国产精品九色蝌蚪自拍| 亚洲电影第三页| 黄网站免费久久| 91亚洲男人天堂| 欧美一区二区黄色| 中文字幕一区二区日韩精品绯色| 亚洲午夜免费电影| 国产精品一区在线| 欧美日韩黄色影视| 国产日韩三级在线| 丝袜国产日韩另类美女| 成人小视频在线观看| 69堂成人精品免费视频| 久久精品一级爱片| 丝袜美腿高跟呻吟高潮一区| 国产成人av电影在线播放| 欧美精品免费视频| 亚洲免费观看高清| 调教+趴+乳夹+国产+精品| 国产91丝袜在线观看| 日韩欧美一二区| 亚洲激情图片一区| 国产成人鲁色资源国产91色综 | 欧美无砖专区一中文字| 精品成人一区二区三区| 亚洲第一福利视频在线| 国产一区亚洲一区| 欧美日韩极品在线观看一区| 亚洲国产精品精华液2区45| 日本成人超碰在线观看| 色屁屁一区二区| 中文字幕一区二区三区精华液 | 日韩激情在线观看| 欧美私人免费视频| 一区二区三区在线看| 成人黄色软件下载| 中文字幕电影一区| 成人性生交大合| 日本一区二区三区电影| 国产麻豆日韩欧美久久| 久久影院视频免费| 国产乱子伦一区二区三区国色天香| 日韩欧美一二三| 国产精品99久久久久久有的能看| 国产亚洲美州欧州综合国| va亚洲va日韩不卡在线观看| 日韩久久一区二区| 5566中文字幕一区二区电影| 日韩黄色一级片| 精品国产制服丝袜高跟| 成人综合在线观看| 亚洲电影视频在线| 久久久综合激的五月天| 色香色香欲天天天影视综合网| 亚洲一区二区在线视频| 日韩欧美区一区二| aaa国产一区| 日韩专区欧美专区| 国产精品视频九色porn| 欧美日韩精品久久久| 国产精品综合网| 一二三区精品福利视频| 欧美一区二区国产| 不卡av电影在线播放| 欧美色偷偷大香| 夜夜精品浪潮av一区二区三区| 色婷婷亚洲综合| 亚洲欧美偷拍三级| 欧美亚洲综合久久| 免费亚洲电影在线| 欧美v亚洲v综合ⅴ国产v| 午夜电影网一区| 日韩欧美国产wwwww| 奇米影视在线99精品| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 国产精品动漫网站| 99久久99精品久久久久久| 日韩中文欧美在线| 久久先锋资源网| 91蜜桃免费观看视频| 日韩在线一二三区| 777午夜精品免费视频| 爽好多水快深点欧美视频| 欧美在线播放高清精品| 亚瑟在线精品视频| 欧美mv日韩mv国产| 99九九99九九九视频精品| 国产亚洲精品中文字幕| 91精品国产免费| 成人a区在线观看| 亚洲一区二区三区四区不卡| 亚洲精品一线二线三线| 色播五月激情综合网| 日韩av一级片| 亚洲手机成人高清视频| 91免费精品国自产拍在线不卡| 久久爱www久久做| 亚洲精品中文在线| 精品福利一二区| 国产精品88av| 国产在线精品一区二区夜色 | 91免费视频网址| 亚洲少妇30p| 中文字幕av一区二区三区高| 91国内精品野花午夜精品| 老司机免费视频一区二区| 国产精品成人午夜| 亚洲视频一区二区免费在线观看|