2012-03-02 4 views
9

여러분 중 일부는 눈치 챘을 수도 있습니다. 대부분의 시스템 앱이 화면 모서리가 둥근 모서리입니다. 장치 화면의 네 구석이 둥글게 보입니다.앱 화면에서 둥근 모서리를 만드는 방법은 무엇입니까?

그러나 대부분의 타사 앱 (예 : 코너는 90º)이 아니지만 Facebook 메신저로 사용되는 일부 앱을 보았습니다. 많은 다른 사람들이이 효과를 가졌지 만 스플래시 화면 (default.png 이미지 파일의 수정 일뿐입니다)에서만 나타납니다.

이 효과를 얻으려면 속성이 있습니까?

답변

16

당신은 전체 응용 프로그램을 통해 둥근 모서리를 원하고, 명시 적으로 AppDelegate에에 전화, 당신이 원하는 모든 다른 뷰 컨트롤러로 다시 작성하지 않으면 : 잊지 마세요 (didFinishLaunching 방법)

[self.window.layer setCornerRadius:20.0]; 
[self.window.layer setMasksToBounds:YES]; 
self.window.layer.opaque = NO; 

을 to :

이 방법은 VIEW가 아닌 WINDOW에 애니메이션을 만들기 때문에 더 좋습니다. 따라서 나머지 UI는 90도 코너로 디자인 할 수 있으며 자동으로 반올림됩니다. 한 번 호출하는 것이 훨씬 쉽습니다.

또한이 지연 특히 층을 래스터 성능을 개선 할 수있다

:

[self.window.layer setShouldRasterize:YES]; 
[self.window.layer setRasterizationScale:[UIScreen mainScreen].scale]; 

상기 인터페이스가 너무 무거운 않고 "이미지처럼 행동"의 애니메이션/그래픽 변화를 강제 . Retina 또는 Non Retina 화면에 따라 성능이 향상되고 래스터 화됩니다. (이것은 [UIScreen] 콜이며, ".scale"은 망막의 경우 2.0, 망막의 경우는 1.0을 반환합니다. 매우 간단합니다.

희망이 있으시면 다시 방문해 보겠습니다. ! :)

+0

설명을 주셔서 감사합니다. 그러나 성능이 창이나 특정보기에서 모두 큰 영향을받습니다. 나는 그것을 사용하지 않는 것이 좋겠지 만 그것을하는 법을 아는 것이 좋다. – htafoya

+0

문제 없음 :). 래스터 화 효과가 지연을 제거해야했지만 :/ – topLayoutGuide

+3

상단 모서리를 제외하고 훌륭하게 작동합니다. 상태 표시 줄 때문에 반올림되지 않았습니까? – jjxtra

1

다음은보기의 모서리를 둥글게합니다. 당신의 viewDidLoad에 넣을 수 있습니다

#import <QuartzCore/QuartzCore.h> 

view.layer.cornerRadius = 7; 
1
// Import QuartzCore.h at the top of the file 
#import <QuartzCore/QuartzCore.h> 


self.view.layer.backgroundColor = [UIColor orangeColor].CGColor; 
self.view.layer.cornerRadius = 20.0; 
self.view.layer.frame = CGRectInset(self.view.layer.frame, 20, 20); 

체크 아웃 Introduction to CALayers Tutorial. 당신은 좋은 출발을 얻을 것이다.

+0

방금 ​​상단 (또는 하단)을 변경하는 방법을 알고 계십니까 화면의 상단 모서리를 (고정 체재)? – lnafziger

+0

@Inafziger :보기를 선명하게 만들고 둥근 모서리 이미지를 넣습니다. – Devang

+0

고마워요! 더 나은 방법이 있었으면 좋겠다. – lnafziger

0

@PsycoDad : @ cocotouch의 대답이 추가 그룹화에있는 UITableViewCell 같은

CGFloat statusBarHeight = [UIApplication sharedApplication].statusBarFrame.size.height; 
CGRect screenBounds = [[UIScreen mainScreen] bounds]; 
self.window.layer.frame = self.window.layer.bounds = 
    CGRectMake(0, 
      statusBarHeight, 
      screenBounds.size.width, 
      screenBounds.size.height - statusBarHeight); 
관련 문제