비디오: iPad 및 iPad Pro — 화면 캡쳐에 Apple Pencil로 바로 그림 그리는 법 — Apple 2024
에 있지 않은 코드) iPad 응용 프로그램을 만들 때보기를 제어하는 코드를 포함해야합니다 다음 예제의 iPad 응용 프로그램은 화면 아래로 스크롤하는 단어를 표시하도록 설계되었습니다.DelThoughtsViewController.m 파일을 열어서 텍스트 편집기에 나타나면 코드를 굵게 표시합니다 (코드는 굵게 표시되지 않습니다). h "
#import " 상수 h " @implementation DeepThoughtsViewController @ 뷰 기반 응용 프로그램 템플릿에 의해 제공됩니다. (999) #pragma mark 라이프 사이클보기 / * // 지정된 이니셜 라이저가 뷰가로드되기 전에 필요한 설정을 수행하도록 오버라이드 - (id) initWithNibName: (NSString *) nibNameOrNil 번들: (NSBundle *) nibBundleOrNil {if (self = [슈퍼 initWithNibName: nibNameOrNil 번들: nibBundleOrNil]) {// 사용자 정의 initia lization} return self;} * / / * // nib을 사용하지 않고 프로그램 방식으로 뷰 계층을 작성하려면 loadView를 구현합니다. - (void) loadView {} * / / * // 뷰를로드 한 후 추가 설정을 수행 할 viewDidLoad를 구현합니다. 일반적으로 펜촉에서 가져옵니다. - (void) viewDidLoad {[super viewDidLoad];} * / - (무효) viewDidLoad { [super viewDidLoad]; [NSTimer scheduledTimerWithTimeInterval:. 5 타겟: 셀렉터: @selector (onTimer) userInfo: nil repeats: YES]; " forKey: kWordsOfWisdom] " "(999)"; fallingWords = @ " 평화 사랑의 그루비 음악 "; } else { fallingWords = [[NSUserDefaults standardUserDefaults] stringForKey: kWordsOfWisdom]; } { [[NSUserDefaults standardUserDefaults] setDouble: 10. 0 forKey: kSpeed]; 속도 = kMaxSpeed-10. 0;} else { speed = kMaxSpeed - [[NSUserDefaults standardUserDefaults] doubleForKey: kSpeed]; UILabel * fallingImageView = [[UILabel alloc]] initWithFrame: CGRectMake (0, 0) [999] #pragma mark - #pragma mark 애니메이션 - (void) onTimer {, 100, 30)]; fallingImageView. text = fallingWords; fallingImageView. textColor = [UIColor purpleColor]; fallingImageView. font = [UIFont systemFontOfSize: 30]; fallingImageView. backgroundColor = [UIColor clearColor]; fallingImageView. adjustsFontSizeToFitWidth = YES; int startX = round (random () % 400); int endX = round (random () % 400); // 떨어지는 속도 double randomSpeed = (1 / round (random () % 100) +1) * 속도; // 이미지 크기; double scale H = (1 / round (random () % 100) +1) * 60; double scaleW = (1 / round (random () % 100) +1) * 200; [자기.뷰 addSubview: fallingImageView]; fallingImageView. frame = CGRectMake (startX, -100, scaleW, scaleH); fallingImageView. 알파 =. 75; [UIView beginAnimations: nil context: fallingImageView]; [UIView setAnimationDuration: randomSpeed]; [UIView setAnimationDelegate: self]; [UIView setAnimationDidStopSelector: @selector (animationDone: finished: context:)]; fallingImageView. frame = CGRectMake (endX, 자기 전망. 프레임. 크기. 높이, scaleW, scaleH); [UIView commitAnimations]; (NSString *) animationID: (NSNumber *) 완료된 컨텍스트: (id) context { UIImageView * fallingImageView = context; [fallingImageView removeFromSuperview]; [fallingImageView release]; #pragma mark - #pragma mark 컨트롤 - (IBAction) 설정 { } #pragma mark - #pragma mark Orientation // 기본값 세로 방향이 아닌 다른 방향을 허용하려면 무시하십시오. - (BOOL) shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation {return YES}} #pragma mark - #pragma mark 메모리 관리 - (void) didReceiveMemoryWarning {// 뷰가없는 경우 뷰를 해제합니다. 슈퍼 뷰. [슈퍼 didReceiveMemoryWarning]; // 사용하지 않는 캐시 된 데이터, 이미지 등을 해제하십시오.} - (void) viewDidUnload {// 기본보기의 유지 된 하위 뷰를 모두 해제합니다. // e. 지. 본인. myOutlet = nil;} - (void) dealloc {[super dealloc];} @end 다음 코드를 추가하십시오.추가 한 첫 번째 명령문은 상수를 가져옵니다. h 파일. 이제 NSUserDefaults로 설정 한 모든 키를 후속 코드에서 사용하여 사용자 설정을 검색 할 수 있습니다. Objective-C는 @synthesize 문을 포함 할 때마다 필요한 접근 자 메서드를 만듭니다. 위 코드의 문은 각 @property 선언 (speed 및 imageView)에 대한 접근 자 메서드를 만듭니다. 두 개의 #pragma mark 문에는 초기화 및로드 뷰 코드가 들어 있습니다. viewDidLoad 메시지는 nib 파일 (Interface Builder에서 수정할 수있는.xib 파일)에서 뷰를로드 한 직후에 전송됩니다. 이것은보기 초기화를 위해 코드를 삽입하는 곳입니다.이 경우 DeepThoughts의 하강 단어를 표시하는 것을 의미합니다. 삽입 한 viewDidLoad 메서드는 낙하 단어의 각 표시 사이의 간격에 대한 타이머를 설정하여 시작합니다. NSTimer 클래스를 사용하여 타이머를 만듭니다. 타이머는 특정 시간 간격이 경과 할 때까지 기다린 후 실행되어 지정된 메시지를 대상 개체로 보냅니다. 이 코드는 scheduledTimerWithTimeInterval을 사용합니다. target: selector: userInfo: repeats: 클래스 메소드를 사용하여 타이머를 만들고 기본 모드의 현재 실행 루프에서 예약합니다. 간격은 0.5 초이며 대상은 자체이며 셀렉터는 타이머가 실행될 때 대상에 보내는 메시지입니다.이 경우에는 onTimer입니다. userInfo는 타이머에 대한 사용자 정보이며 (nil로 설정 됨) 타이머는 반복으로 설정됩니다. 즉, 무효화 될 때까지 반복적으로 자체 예약됩니다. 다음 코드는 kWordsOfWisdom 설정이 NSUserDefaults로 이동되었는지 확인합니다. 코드는 응용 프로그램을 처음 실행 한 후에 만 사용자 기본 설정을 NSUserDefaults로 이동합니다. 설정이 아직 NSUserDefaults로 이동되지 않은 경우 코드는 fallingWords에 대한 초기 환경 설정 값 ("Peace Love Groovy Music")을 사용합니다. 설정이 NSUserDefaults로 이동 된 경우 코드는이를 읽은 다음 사용자의 환경 설정에 관계없이 fallingWords를 설정합니다. 코드는 속도 설정으로이 확인을 반복합니다. standardUserDefaults (NSUserDefaults 클래스 메소드)를 사용하여 표준 사용자 기본 설정에 액세스하고 거기에 데이터를 저장할 수 있습니다. 컨트롤이라는 제목의 #pragma mark 섹션에는 라이트 정보 버튼을보기 컨트롤러에 연결하기위한 자리 표시 자 설정 방법이 포함되어 있습니다. IBAction 한정자를 사용하는 작업 메서드입니다. 타이머를 디스플레이의 실제 그림에 연결하는 것이 onTimer 방법입니다. UILabel 클래스는 읽기 전용 텍스트 뷰를 구현합니다. 이 클래스를 사용하여 한 줄 또는 여러 줄의 정적 텍스트를 그릴 수 있습니다. 이 경우 코드 블록은 CGRectMake와 함께 initWithFrame 메서드를 사용하여 사각형 원점의 x 좌표 및 y 좌표 (0, 0) 및 지정된 너비 및 높이 (100, 30)를 사용하여 사각형을 만듭니다..
코드는 fallingWords 문자열을 fallingImageView로 변환하여 표시합니다. 텍스트 색상, 글꼴 및 배경색을 설정합니다. 너비의 글꼴 크기를 조정합니다. font 및 textColor 속성은 전체 텍스트 문자열에 적용됩니다.
코드의 다음 블록은 startingImageView의 시작 및 끝점 (startX 및 endX), 속도 및 width (scaleW) 및 height (scaleH)에 대해 random 함수를 사용합니다. beginAnimations: context: 메소드는 애니메이션 블록을 시작하고 commitAnimations 메소드는 블록을 종료합니다. 블록 내에서 코드는 속성 값을 설정하여 애니메이션을 구성하는 시각적 변경을 수행합니다.-
setAnimationDuration 메소드는 애니메이션 기간을 설정하고 setAnimationDidStopSelector는 애니메이션이 중단 될 때 애니메이션 위임자에게 보낼 메시지를 설정합니다. 애니메이션 위임자는 animationDone이며, fallingFomSuperview (UIView 클래스의 인스턴스 메서드)를 사용하여 fallingImageView를 제거한 다음 release (NSAutoreleasePool 클래스의 인스턴스 메서드)를 사용하여 fallingImageView를 해제합니다.
-
마지막으로이 코드에는 섹션을 Orientation으로 표시하는 두 개의 #pragma mark 문과 didReceiveMemoryWarning 메서드 위에 두 개의 #pragma mark 문이있어 해당 섹션을 메모리 관리로 표시합니다.