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

產品分類

當前位置: 首頁 > 傳感測量產品 > 工業傳感器 > 力傳感器

類型分類:
科普知識
數據分類:
力傳感器

ios 重力傳感器:iOS 重力感應之箭頭指向重力方向

發布日期:2022-10-09 點擊率:43


ios 重力傳感器:iOS 重力感應之箭頭指向重力方向  第1張

ios 重力傳感器:iOS 重力感應之箭頭指向重力方向

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

ios 重力傳感器:IOS學習筆記-加速度傳感器(重力感應)-UIAccelerometer

@interface?DSViewController :?UIViewController?

{

//我們用一個label來表示隨加速度方向運動的小方塊

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;

//實例化 隨加速度方向運動的小方塊(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];

//設置加速度傳感器的 接收加速度通知的時間間隔

//設置為1.0/60.0表示一秒接收60次,可根據實際需求調整

accelerometer.updateInterval?=?1.0/60.0;

//下面這個不設置,代理方法就不會調用

accelerometer.delegate?=?self;

}

-(void)viewWillDisappear:(BOOL)animated

{

[super?viewWillDisappear:animated];

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

//結束加速度傳感器的工作

_speedX?=?_speedY?=?0;

UIAccelerometer?*accelerometer = [UIAccelerometer?sharedAccelerometer];

accelerometer.delegate?=?nil;

}

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

{

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

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

_speedX?+= acceleration.x;

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

_speedY?+= acceleration.y;

//小方塊將要移動到的x軸坐標

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

//小方塊將要移動到的y軸坐標

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;

}

//移動小方塊

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

}

@end

首尾呼應:加速度傳感器使用很easy有木有!

ios 重力傳感器:IOS的重力感應

IOS的重力感應

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

@end
CMMotionManager 將是我們使用的Object,可以用來監測重力!
同時,咱們不能在需要監測重力感應的地方直接使用這個類,這樣耦合比較嚴重,也不利于重用。所以抽離出來,在代碼中您可以看到,我將定義一個signleton,同時將重力變化的事件回調給其代理。
2.接著往下是定義其函數,這個很簡單,直接貼代碼。
[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 為例介紹如何使用重力感應
[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 是一個UIImageView的成員,其寬高是一個分別是我定義的宏。
注意,我在頭文件添加了重力感應的代理,此時這行
[[IFAccelerometer shareAccelerometer]addOberser:self];
表明我在這個viewController中使用這個重力感應的數據。
好,現在是完成回調的時候了,繼續貼代碼
[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;
}
上面是對于邊界的處理等等操作,都很簡單,不一一介紹了。

相關文章暫無相關文章
ios 重力傳感器:iOS 重力感應之箭頭指向重力方向  第3張

ios 重力傳感器:IOS重力感應

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

我們在StoryBoard中拖入一個新的ViewController,綁定好它的File's Owner,然后放入6個UIView,設置好不同的背景色

程序運行后,我們在旋轉模擬器,發現在豎屏和橫屏狀態下,界面顯示如下
    

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

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

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

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
用戶界面即將旋轉時觸發此函數,toInterfaceOrientation表示即將到達的方向

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
用戶界面旋轉結束時觸發此函數,fromInterfaceOrientation表示旋轉前的方向

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

所以在上面那個實例中我們先將6個UIVIew控件連結到視圖控制器中,然后在willAnimateRotationToInterfaceOrientation:duration:中修改旋轉后的界面

- (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);
}
}

上面代碼在旋轉到橫屏時修改view控件的位置,因為我們strobyboard中默認布局了豎直狀態下的界面,所以在代碼中不需要重新布局view控件豎直狀態時的位置,但是如果我們是用編碼方式放置的控件,那么需要在上面代碼中添加一個else,設置豎屏后的界面。
    

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

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

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

      9000px;">

          99re亚洲国产精品| 偷拍亚洲欧洲综合| 在线播放国产精品二区一二区四区| 国产精品亚洲一区二区三区在线| 视频在线在亚洲| 日韩在线卡一卡二| 免费观看30秒视频久久| 久久精品国产一区二区三 | 经典三级一区二区| 久久精品二区亚洲w码| 精品亚洲porn| 国内精品在线播放| 国产成人在线免费| 99久久精品免费看国产免费软件| 波多野洁衣一区| 天天射综合影视| 美女视频黄久久| 久久 天天综合| 国产成人啪午夜精品网站男同| 日韩综合小视频| 天堂一区二区在线免费观看| 精品一二三四区| 久久电影网电视剧免费观看| 91女人视频在线观看| 欧美色偷偷大香| 国产酒店精品激情| 91啪亚洲精品| 日韩免费性生活视频播放| 欧美韩国日本综合| 亚洲大片精品永久免费| 美女高潮久久久| 北条麻妃一区二区三区| 欧美精品aⅴ在线视频| 久久久久久久久久久久久久久99| 中文字幕视频一区二区三区久| 亚洲电影激情视频网站| 国产精品亚洲午夜一区二区三区| 在线免费精品视频| 久久亚洲精品小早川怜子| 一区二区三区高清不卡| 国产精品一区二区三区乱码| 欧美性一级生活| 国产午夜亚洲精品不卡| 视频在线观看一区二区三区| 国产成a人无v码亚洲福利| 欧美视频一区二区三区| 日韩久久精品一区| 亚洲一区在线看| www.激情成人| 久久网这里都是精品| 无码av中文一区二区三区桃花岛| 丁香六月综合激情| 精品三级在线看| 亚洲国产精品久久一线不卡| 丁香啪啪综合成人亚洲小说| 精品免费国产二区三区 | 99久久99久久精品免费观看| 欧美日韩国产在线观看| 亚洲欧洲日韩综合一区二区| 国产乱码精品一区二区三区av | 国产成人一级电影| 欧美videossexotv100| 色综合久久久久综合体桃花网| 久久久久久久久久久电影| 欧美午夜精品理论片a级按摩| 亚洲18女电影在线观看| 欧美性色欧美a在线播放| 亚洲成人一二三| 久久美女艺术照精彩视频福利播放 | 美洲天堂一区二卡三卡四卡视频| 日韩欧美亚洲一区二区| 91精品国产日韩91久久久久久| 久久综合九色综合97_久久久| 日韩中文欧美在线| 在线播放亚洲一区| 亚洲一区二区三区不卡国产欧美| 一本一道波多野结衣一区二区| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 亚洲色图在线播放| 99re这里只有精品视频首页| 中文字幕精品一区| 国产高清不卡一区二区| 久久久天堂av| thepron国产精品| 中文字幕综合网| 欧美私人免费视频| 日本在线不卡视频| www久久精品| 不卡的av电影| 一区二区高清视频在线观看| 欧美日韩在线精品一区二区三区激情 | 91精品国模一区二区三区| 蜜桃av一区二区| 久久久国产一区二区三区四区小说| 激情久久久久久久久久久久久久久久| 精品国产一区二区亚洲人成毛片 | **性色生活片久久毛片| 色噜噜狠狠成人网p站| 天堂资源在线中文精品| 精品国产一二三| 99免费精品在线| 亚洲一区二区三区四区在线| 欧美疯狂做受xxxx富婆| 国产乱淫av一区二区三区| 国产精品九色蝌蚪自拍| 色视频一区二区| 首页亚洲欧美制服丝腿| 国产欧美日韩精品a在线观看| 91在线观看地址| 日韩精品1区2区3区| 久久久久久久久99精品| 色综合久久久网| 精品一区二区免费看| 中文字幕亚洲区| 欧美一级理论性理论a| 丁香激情综合五月| 午夜精品aaa| 亚洲欧洲99久久| 日韩一级二级三级精品视频| 成人福利视频网站| 人禽交欧美网站| 亚洲六月丁香色婷婷综合久久| 91精品婷婷国产综合久久性色| 国产91露脸合集magnet| 日韩一区欧美二区| 亚洲日本在线视频观看| 精品国产99国产精品| 一本大道av伊人久久综合| 精彩视频一区二区| 亚洲一区二区综合| 国产婷婷色一区二区三区在线| 91福利在线导航| 国产在线看一区| 日韩国产精品久久久| 亚洲欧美日韩系列| 久久精品免视看| 欧美xxxxx牲另类人与| 欧美三级在线视频| www.欧美色图| 国产大陆a不卡| 美女视频黄久久| 夜夜嗨av一区二区三区中文字幕| 久久亚洲精华国产精华液| 制服丝袜一区二区三区| 欧美亚日韩国产aⅴ精品中极品| 97se亚洲国产综合自在线 | 成人国产精品免费观看| 国精产品一区一区三区mba视频| 亚洲成人激情av| 亚洲精品国产一区二区精华液| 国产精品乱码一区二三区小蝌蚪| 精品国产伦一区二区三区观看方式 | 亚洲主播在线播放| 亚洲免费在线观看| 亚洲三级在线看| 一区二区三区美女| 亚洲一卡二卡三卡四卡| 亚洲国产精品影院| 夜夜亚洲天天久久| 亚洲国产视频直播| 午夜精品免费在线观看| 首页国产欧美久久| 美女一区二区视频| 国产一区二区毛片| 国产成人精品一区二区三区网站观看 | 色综合久久天天| 欧美中文字幕亚洲一区二区va在线| 99re热这里只有精品视频| 色综合久久天天| 欧美片在线播放| 日韩精品一区二区三区在线观看| 欧美一区二区三区在线观看| 日韩精品专区在线影院重磅| 欧美成人精品3d动漫h| 久久久久亚洲综合| 亚洲欧洲日本在线| 亚洲蜜臀av乱码久久精品蜜桃| 亚洲欧美日韩中文播放| 亚洲大型综合色站| 精品在线你懂的| www.日本不卡| 欧美久久久久久久久| 精品日韩一区二区三区免费视频| 国产三级精品视频| 亚洲激情在线播放| 青椒成人免费视频| 成人免费视频视频| 欧美视频日韩视频| 精品成人一区二区三区| 亚洲人xxxx| 美女免费视频一区二区| 成人av综合在线| 欧美写真视频网站| 久久久久国产免费免费| 亚洲一区二区欧美日韩| 激情综合色播激情啊| 91社区在线播放| 久久综合资源网| 午夜视频在线观看一区二区| 国产精品12区|