一、iOS屏幕適配發展歷程 設備適配技術 4及以前(iPad未出) 直接用代碼計算
有瞭iPad autoResizing 有不同屏幕的iPhone後 autoLayout 有更多不同屏幕的iPhone後 sizeClass
二、各個技術的特性
1、 直接用代碼計算
由於屏幕的大小都一樣,隻有橫[……]
只講重點的設計教學,立刻學習網頁教學網誌!
一、iOS屏幕適配發展歷程 設備適配技術 4及以前(iPad未出) 直接用代碼計算
有瞭iPad autoResizing 有不同屏幕的iPhone後 autoLayout 有更多不同屏幕的iPhone後 sizeClass
二、各個技術的特性
1、 直接用代碼計算
由於屏幕的大小都一樣,隻有橫[……]
一、純手動之Autolayout
1、VFL語言添加約束
VFL(Visual format language)語言是蘋果為瞭簡化手寫Autolayout代碼所創建的專門負責編寫約束的代碼。為我們簡化瞭許多代碼量。
2、使用步驟
使用步驟同手動添加約束保持一致
創建控件添加到父控件禁用Aotures[……]
ios鍵盤輸入屏幕上移的效果,在開發中會發現,在iOS開發中經常是會遇到一個鍵盤遮擋屏幕的一個情況出現,就比如當你輸入賬號密碼的時候,會出現遮擋瞭一半的位置,甚至是更多的位置最關鍵的是會遮擋瞭下面的一些按鈕,導致按鈕事件也觸發不瞭,目前解決的辦法就是在當輸入這些消息的時候如何讓整個屏幕上移一個鍵盤的[……]
//獲取當前屏幕顯示的ViewController
- (UIViewController *)getCurrentVC
{
UIViewController *result = nil;
UIWindow * window = [[UIApplication sharedAppl[......]
如果把屏幕的長和寬都按長度劃分三種類型(官網中成為size class):壓縮(compact)、任意(any)、常規(regular),那麼長和寬的組合就有9種類型。這裡我把每一種類型稱為一種模式。
另外,屏幕的狀態根據尺寸大小和其方向可以分為很多情況。[……]
代碼如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"[……]
設置支持的屏幕方向有兩個級別,一個是app級別的,另一個是viewController級別的。
app 級別的可以在[target]-[general]-[device orientation]裡面設置,如下圖:
默認情況下Upside Down沒有勾選,其他都勾選瞭。
(為什麼Up[……]
曾經,iOS開發是不需要考慮屏幕適配問題的,因為隻有一種屏幕尺寸。而現在已經有瞭4種屏幕,4,5,6,6P,因此屏幕適配也成瞭iOS開發中必須考慮的問題。並且,這4種屏幕的寬高比全部都不一樣,所以簡單的按比例縮放並不能解決問題。我們最近做的一個APP也處理瞭屏幕適配,本文簡單總結一下
市場上的android手機五花八門,各種尺寸的屏幕讓android程序猿們比較頭疼。也有一些大神寫瞭一些博客提出瞭自己的觀點。iOS貌似也迎來瞭大屏6+,因此屏幕適配的問題也是有滴,因此蘋果也有自己的方法-auto Layout 。本人初學iOS,今天學瞭自動佈局。在學習的過程中,畢竟還是有些知識點[……]
最近項目要做一個html5電子協議,裡面涉及到簽名,豎屏簽名不夠,所以需要把屏幕切換到橫屏,簽完字後把簽字內容返回到豎屏中的方框內,由於項目不上AppStore,隻用企業證書打包,所以使用下面方式來實現橫豎屏切換功能。
bool isPortrait = true; - (IBAction)cha[......]
之前如果做過Web前端頁面的小夥伴們,看到絕對定位和相對定位並不陌生,並且使用起來也挺方便。在IOS的UI設計中也有絕對定位和相對定位,和我們的web前端的絕對定位和相對定位有所不同但又有相似之處。下面會結合兩個小demo來學習一下我們IOS開發中UI的絕對定位和相對定位。在前面的博客中所用到的UI[……]
在特別的場景下,需要針對屏幕旋轉作特殊處理。在ios系統下實現相關的功能還是比較方便的。
我下面介紹兩種方法:
1.註冊UIApplicationDidChangeStatusBarOrientationNotification通知(舉例:在一個viewcontroller類的viewdidload[……]
截取當前屏幕
UIGraphicsBeginImageContextWithOptions(CGSizeMake(CGRectGetWidth(self.superview.frame), CGRectGetHeight(self.superview.frame)), NO, 1); [self.s[......]
ios軟件開發過程中很重要的一點是對系統和屏幕進行適配對系統的適配主要是IOS7以後和之前以及IOS8新增特性,屏幕適配主要是對不同設備采用不同的佈局以最佳展示效果展現給用戶。
針對系統的適配:
IOS7以後和之前
#define IOSVersion[......]
判斷屏幕的方法有很多著及僅提供幾個我個人認為好用的方案
Landscape 豎屏 Portrait 橫屏 最有效的方法是: 在willRotateToInterfaceOrientation:duration: 方法中將方向存儲起來: DrviceOrientation = toInterf[......]
目前開發的項目由於歷史原因均用代碼編寫UI,所以判斷設備尺寸成瞭不可避免的任務。
目前我是這樣進行尺寸判斷的。
首先定義一個枚舉類,包含瞭所有的尺寸類型:
// 屏幕尺寸的枚舉類型 typedef NS_ENUM(NSUInteger, ScreenSizeType) { iPhone4Size,[......]
我們開發一個App的時候, 通常希望它在 iPhone, iPad, Mac上同時能運行, 尤其是遊戲。
這樣就需要我們考慮不同設備不同的分辨率,處理起來比較麻煩。
比如說,按照官方的做法,我們需要提供諸如 xx.png, xx@2x.png, xx@3x.png, xx~iPad.png, and x[……]
我們開發一個App的時候, 通常希望它在 iPhone, iPad, Mac上同時能運行, 尤其是遊戲。
這樣就需要我們考慮不同設備不同的分辨率,處理起來比較麻煩。
比如說,按照官方的做法,我們需要提供諸如 xx.png, xx@2x.png, xx@3x.png, xx~iPad.png, and x[……]
Android Webview適配屏幕寬度。
網上有很多解決方案,但是,要麼不適用(改h5),要麼影響其他h5顯示。?
下面的代碼,親測,至少目前為止,管用。
//支持javascript web.getSettings().setJavaScriptEnabled(true); //[......]
android中使用DisplayMetrics獲取屏幕參數,int android.graphics.Bitmap.getDensity(),返回bitmap-density(密度)。默認的density就是當前display-density,除非當前應用程序不支持不同的scr[……]
package com.sun.framework.Utils; import android.content.Context; import android.util.DisplayMetrics; import android.util.TypedValue; import android.[......]
Android中對屏幕的像素適配處理分類
屏幕密度
對應的標簽
對應的像素
120dip
ldpi
1dp= 0.75px
1[……]