codingCat banner
codingCat banner

단막 Cocoa Touch × iOS 개발


 

전체 화면 크기와 세이프 영역 크기 얻기


본 포스팅에서는 전체 화면 크기와 세이프 영역 크기를 각각 얻고, Quartz로 확인해보겠다.

 

전체 화면 크기 얻기


전체 화면 크기는 UIScreen.main.bounds로 얻을 수 있다. 반환형은 CGRect이다.

먼저, Objective-C에서는 다음과 같이 코딩한다.

/* Objective-C code. */
#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>
// ...
CGRect rect;
rect = [[UIScreen main] bounds];

Swift에서는 다음과 같이 코딩한다.

/* Swift code. */
import UIKit
import QuartzCore

// ...

var rect: CGRect
rect = UIScreen.main.bounds

 

세이프 영역 크기 얻기


세이프 영역Safe Area은 상단의 시각, 통신사 및 배터리 잔량 및 하단의 터치 영역(iPhone X 이후) 등을 제외한 영역이다. UIView 클래스 내에서 safeAreaLayoutGuide.layoutFrame으로 구할 수 있다.

/* Objective-C code. */
#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>
// ...

CGRect rect;
rect = [[self safeAreaLayoutGuide] layoutFrame];

Swift에서는 다음과 같이 코딩한다.

/* Swift code. */
import UIKit
import QuarzCode

var rect: CGRect
rect = self.safeAreaLayoutGuide.layoutFrame

 

실행해보기


다음은 Swift로 작성한 UIView 파생 클래스의 draw:rect 구현 예이다. 전체 화면은 녹색으로 칠하고, 세이프 영역은 청색으로 칠한다.

/* Swift code. */
override func draw(_ rect: CGRect) {
    let context: CGContext? // optional ('nil' reference available) constant
    var r: CGRect // variable
    
    super.draw(rect)
    
    context = UIGraphicsGetCurrentContext()
    
    r = UIScreen.main.bounds
    context?.setFillColor(red: 0.0, green: 1.0, blue: 0.0, alpha: 1.0)
    context?.fill(r)
    
    r = self.safeAreaLayoutGuide.layoutFrame
    context?.setFillColor(red: 0.0, green: 0.0, blue: 1.0, alpha: 1.0)
    context?.fill(r)

실행 결과.



trackbacks: 0, comments: 0
 
Comments
 
 
'Application Programming Interface/Cocoa' Related Articles