自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

詳解iPad橫豎屏切換解決方案

移動開發(fā) iOS
本文介紹的是詳解iPad橫豎屏切換解決方案,詳細的介紹了橫豎屏切換的實例,來看詳細內(nèi)容。

詳解iPad橫豎屏切換解決方案是本文要介紹的內(nèi)容,不多說,先來看內(nèi)容。由于ipad橫豎屏不同,所以好的應(yīng)用,橫豎屏的頁面布局也不一樣。那么就需要橫豎屏的整體解決方案。先看一個橫豎屏布局不一樣的界面。

詳解iPad橫豎屏切換解決方案 詳解iPad橫豎屏切換解決方案

上面兩張圖是來自同一個界面的橫豎版的截屏??梢钥闯觯?strong>橫豎版顯示的內(nèi)容相同,但是界面布局不同。要實現(xiàn)上述布局,主要是運用UIView中l(wèi)ayoutSubviews方法。當(dāng)UIView設(shè)置為自動適配屏幕時,當(dāng)用戶旋轉(zhuǎn)設(shè)備的時候,會調(diào)用layoutSubviews方法,我們只需重寫這個方法,然后判斷用戶屏幕的方向。在調(diào)整每個空間的位置即可。

下面是實現(xiàn)上述界面的最簡單的原型:

首先分析可以知道左面是圖片,右面是一個圖片加文字的視圖。下面就實現(xiàn)一個左面視圖右面是一個圖加一段字的事例。

事例的截圖如下:

詳解iPad橫豎屏切換解決方案 詳解iPad橫豎屏切換解決方案

其中右面的文字和綠色部分是用一個子視圖封裝的。

整個布局是我在主視圖中添加了一個ContentView視圖,在ContentView視圖中添加了一個ArticleView視圖。

其中ArticleView和ContentView的xib文件都打開了

詳解iPad橫豎屏切換解決方案

在ContentView中重寫layoutSubviews方法,然后根據(jù)stausbar的方向判斷當(dāng)前視圖的橫豎屏。具體代碼:

  1. -(void)layoutSubviews{   
  2.     [super layoutSubviews];   
  3.     UIDeviceOrientation interfaceOrientation=[[UIApplication sharedApplication] statusBarOrientation];   
  4.     if (interfaceOrientation == UIDeviceOrientationPortrait || interfaceOrientation == UIDeviceOrientationPortraitUpsideDown) {   
  5.         //翻轉(zhuǎn)為豎屏?xí)r   
  6.         [self setVerticalFrame];   
  7.     }else if (interfaceOrientation==UIDeviceOrientationLandscapeLeft || interfaceOrientation == UIDeviceOrientationLandscapeRight) {   
  8.         //翻轉(zhuǎn)為橫屏?xí)r   
  9.         [self setHorizontalFrame];   
  10.     }   
  11. }   
  12.  
  13. -(void)setVerticalFrame   
  14. {   
  15.     NSLog(@"豎屏");   
  16.     [titleLable setFrame:CGRectMake(283, 0, 239, 83)];   
  17.     [leftView setFrame:CGRectMake(38, 102, 384, 272)];   
  18.     [rightView setFrame:CGRectMake(450, 102, 282, 198)];   
  19. }   
  20.  
  21. -(void)setHorizontalFrame   
  22. {   
  23.     NSLog(@"橫屏");   
  24.     [titleLable setFrame:CGRectMake(183, 0, 239, 83)];   
  25.     [leftView setFrame:CGRectMake(168, 122, 384, 272)];   
  26.     [rightView setFrame:CGRectMake(650, 122, 282, 198)];   

在具體的橫豎屏方法中,從新設(shè)置各個組件的坐標即可。

接下來在ContentView中添加ArticleView視圖。

  1. -(id)initWithCoder:(NSCoder *)aDecoder   
  2. {   
  3.     if ((self = [super initWithCoder:aDecoder])) {   
  4.  
  5.         NSArray *arrayContentView =[[NSBundle mainBundle] loadNibNamed:@"ArticleView" owner:self options:nil];   
  6.         rightView=[arrayContentView objectAtIndex:0];   
  7.         [self addSubview:rightView];   
  8.     }   
  9.     return self;   

由于我用的是xib,所以初始化方法為initWithCoder,在這個中添加新的視圖。

同樣在ArticleView中設(shè)置橫豎屏相應(yīng)空間的坐標即可。

  1. -(void)layoutSubviews{   
  2.     [super layoutSubviews];   
  3.     UIDeviceOrientation interfaceOrientation=[[UIApplication sharedApplication] statusBarOrientation];   
  4.     CGRect rect=self.frame;   
  5.     rect.size.width=282;   
  6.     rect.size.height=198;   
  7.     [self setFrame:rect];   
  8.     if (interfaceOrientation == UIDeviceOrientationPortrait || interfaceOrientation == UIDeviceOrientationPortraitUpsideDown) {   
  9.         //翻轉(zhuǎn)為豎屏?xí)r   
  10.         [self setVerticalFrame];   
  11.     }else if (interfaceOrientation==UIDeviceOrientationLandscapeLeft || interfaceOrientation == UIDeviceOrientationLandscapeRight) {   
  12.         //翻轉(zhuǎn)為橫屏?xí)r   
  13.         [self setHorizontalFrame];   
  14.     }   
  15. }   
  16.  
  17. -(void)setVerticalFrame   
  18. {   
  19.     NSLog(@"豎屏");   
  20.     [contentView setFrame:CGRectMake(12, 6, 250, 125)];   
  21.     [textLable setFrame:CGRectMake(50, 139, 182, 39)];   
  22. }   
  23.  
  24. -(void)setHorizontalFrame   
  25. {   
  26.     NSLog(@"橫屏");   
  27.     [contentView setFrame:CGRectMake(12, 6, 106, 158)];   
  28.     [textLable setFrame:CGRectMake(135, 11, 147, 39)];   

源代碼:http://easymorse-iphone.googlecode.com/svn/trunk/IpadLayOut/

小結(jié):詳解iPad橫豎屏切換解決方案的內(nèi)容介紹完了,通過ipad屏幕切換的內(nèi)容,是不是以及很清楚了,最后希望本文對你有所幫助。

責(zé)任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2013-08-21 11:15:54

iOS橫豎屏方案

2013-05-23 10:51:28

Android開發(fā)移動開發(fā)橫豎屏切換

2010-02-23 14:56:18

WCF Bug

2011-12-06 14:44:02

iPad企業(yè)級解決方案

2017-12-26 14:05:21

潤乾大屏可視化

2009-12-02 13:39:34

SAP認證Novell

2011-06-08 15:05:43

J2ME

2010-01-25 15:23:12

Android橫豎屏切

2010-05-07 16:30:01

Oracle數(shù)據(jù)集成

2023-03-05 18:23:38

分布式ID節(jié)點

2009-11-04 16:03:59

2018-11-12 11:12:46

2009-11-05 09:42:44

智能小區(qū)寬帶接入

2009-12-22 15:50:11

2019-11-11 17:34:16

前端開發(fā)技術(shù)

2009-10-12 16:29:25

有線網(wǎng)絡(luò)布線解決方案

2009-10-15 10:39:31

綜合布線解決方案

2017-05-11 17:11:13

SDNOpenFlow網(wǎng)絡(luò)

2024-06-14 15:21:15

2018-12-03 12:13:21

Mellanox解決方案
點贊
收藏

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