iOS 개발 전 기종 적합 솔 루 션

최근 프로젝트 를 진행 하 는 동안 아이 폰 모델 의 어 울 리 는 것 이 골 치 아 프 기 때문에 인터넷 자 료 를 정리 하고 기록 하면 글 을 보고 있 는 당신 에 게 도움 이 될 수 있 습 니 다.
오늘 은 최근 에 연구 한 모든 기종 의 적합 한 방향 에 대해 이야기 할 계획 이다.
현재 우리 에 게 적합 한 아이 폰 모델 은 4s,5s,6s,6Plus 네 가지 모델 이 필요 하 다.그것들의 사 이 즈 는 각각
 iphone4s {320, 480}                           960*640
 iphone5 5s {320, 568}                       1136*640
 iphone6 6s   {375, 667}                     1334*750
 iphone6Plus 6sPlus {414, 736}         1920*1080
보통 저 는 실제 프로젝트 개발 에서 Masonary 를 사용 하여 UI 인 터 페 이 스 를 구축 하 는 습관 이 있 습 니 다.Masonary 에서 우 리 는 각 컨트롤 간 의 제약 을 편리 하 게 설정 할 수 있 지만 4s 모델 과 6s Plus 모델 과 비슷 한 높이 가 낮 고 가끔 은 일회 성 제약 만 으로 는 합 리 적 인 인 인 터 페 이 스 를 구축 하지 못 합 니 다.
그래서 이번에 UI 를 구축 하 는 과정 에서 제 생각 은 비례 에 따라 각 기종 을 미세 조정 하 는 것 입 니 다.사고방식 은 다음 과 같다.
미 공 이 제공 하 는 효과 도 는 아이 폰 6 의 효과 도 를 바탕 으로 한다.
나 는 아이 폰 6 에 표 시 된 사 이 즈 를 비교 해 비율 을 환산 해 야 한다.그러면 일부 간격 은 기종 에 따라 달라 질 수 있다.
상호작용 체험 을 고려 한 컨트롤 에 대해 사이즈 가 변 하지 않 는 토대 에서 디 테 일 을 미세 조정 한다.
구체 적 인 코드 에서 나 는 하나의 종 류 를 봉 하여 두 가지 방법 으로 모든 기종 의 높이 와 너 비 를 맞 추 는 것 을 정의 했다.아 이 디 어 는 아이 폰 6 의 비율 에 따라 잘 어 울 리 는 것 이다.
코드 나 도 일부 붙 여 놓 을 게.
헤더 파일 정의

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

typedef NS_ENUM(NSInteger, IPhoneType) {
  iPhone4Type = 0,
  iPhone5Type,
  iPhone6Type,
  iPhone6PlusType
};

@interface CalculateLayout : NSObject

/**
 *   UI   iPhone6           
 *
 * @param height View  
 *
 * @return       
 */

+ (CGFloat)neu_layoutForAlliPhoneHeight:(CGFloat)height;
/**
 *   UI   iPhone6           
 *
 * @param width   
 *
 * @return       
 */
+ (CGFloat)neu_layoutForAlliPhoneWidth:(CGFloat)width;

.m 파일 의 부분 은 다음 과 같 습 니 다.

#define iPhone4Height (480.f)
#define iPhone4Width (320.f)

#define iPhone5Height (568.f)
#define iPhone5Width (320.f)

#define iPhone6Height (667.f)
#define iPhone6Width (375.f)

#define iPhone6PlusHeight (736.f)
#define iPhone6PlusWidth (414.f)

#pragma mark -         
+ (CGFloat)neu_layoutForAlliPhoneHeight:(CGFloat)height {
  CGFloat layoutHeight = 0.0f;
  if (iPhone4) {
    layoutHeight = ( height / iPhone6Height ) * iPhone4Height;
  } else if (iPhone5) {
    layoutHeight = ( height / iPhone6Height ) * iPhone5Height;
  } else if (iPhone6) {
    layoutHeight = ( height / iPhone6Height ) * iPhone6Height;
  } else if (iPhone6P) {
    layoutHeight = ( height / iPhone6Height ) * iPhone6PlusHeight;
  } else {
    layoutHeight = height;
  }
  return layoutHeight;
}

+ (CGFloat)neu_layoutForAlliPhoneWidth:(CGFloat)width {
  CGFloat layoutWidth = 0.0f;
  if (iPhone4) {
    layoutWidth = ( width / iPhone6Width ) * iPhone4Width;
  } else if (iPhone5) {
    layoutWidth = ( width / iPhone6Width ) * iPhone5Width;
  } else if (iPhone6) {
    layoutWidth = ( width / iPhone6Width ) * iPhone6Width;
  } else if (iPhone6P) {
    layoutWidth = ( width / iPhone6Width ) * iPhone6PlusWidth;
  }
  return layoutWidth;
}

코드 는 나 도 이미Github에 놓 았 습 니 다.만약 이것 이 당신 에 게 도움 이 된다 면 클 라 이언 트 코드 의 나머지 에 스타 를 줄 수 있 습 니까?
읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기