본문 바로가기

교육/iOS

(8)
[iOS] voice over 설정 아이폰의 설정-일반-손쉬운사용-VoiceOver를 들어가면 voiceOver를 설정할 수 있다.이 때 voiceOver 문구를 설정하는 방법에 대해 기술 if(UIAccessibilityIsVoiceOverRunning()) // 보이스 오버 상태인지 판별{ [뷰(view, button, label 다가능) setAccessibilityLabel:@"보이스오버문구"];}
[iOS] 키보드 내리는 버튼 추가 텍스트 필드에 숫자만 입력받고 싶은경우 numberpad를 쓴다 하지만 이렇게 쓰게 될 경우는 return 버튼이 없어 키보드를 내리기 뭔가 불편하다.따라서 키보드 위에 done버튼을 두어 키보드를 내리게 하는 법을 기술 - (void)addDoneButton { UIToolbar* keyboardToolbar = [[UIToolbar alloc] init]; [keyboardToolbar sizeToFit]; UIBarButtonItem *flexBarButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; UIBarButtonItem *done..
[iOS] init 1. init 함수- NSObject 자식 중 일반 클래스 : init- viewController : [[MyVC alloc] initWithNibName]로 생성- GUI 클래스 =>코드로 생성 : [[MyView alloc] initWithFrame:rc]; =>xib로 생성 : [[MyView alloc] initWithCoder]로 초기화 2. 샘플 코드ViewController.xib의 뷰를 MyView로 설정하고 MyView에 아래 코드 작성 @implementation MyView-(instancetype)initWithFrame:(CGRect)frame{ self = [super initWithFrame:frame]; if (self) { str=@"hello"; NSLog(@"MyVie..
[iOS] xib와 strong, weak 기본적으로 xib 뷰 안에 있는 객체들을 IBOutlet으로 끌어오면 weak로 설정된다.이 이유는 뷰가 객체들을 잡고 있기 때문에 뷰가 dealloc되지 않는 한 안의 객체들이 dealloc되지 않기 때문이다.따라서 뷰 밖에다 일반 객체등을 끌어놓고 IBOutlet으로 끌어와보면 strong으로 설정된다.이 객체들은 따로 붙잡아 두고 있을 상위 객체가 없기때문에 사용하지 않는 순간 dealloc된다.assign커맨드를 쓰게 되면 포인터 nil초기화를 컴파일러가 따로 해주지 않기 떄문에 weak로 사용해야 한다.(memory leak)
[iOS] Xib Xib가 로드 될때 만약 Xib에 일반 객체가 있고 그 클래스를 코드와 연동해 두면 Xib 로드 시 객체도 초기화 된다. 단순히 뷰를 로드하기 위한 파일은 아니다.
[iOS] 눈내리는 애니메이션 만들기 UIImage* img = [UIImage imageNamed:@"bg_message.9.png"]; UIImageView* imgView = [[UIImageView alloc ]initWithImage:img]; imgView.center = CGPointMake(rand()%320, 0); [self.view addSubview:imgView]; [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:2]; imgView.center = CGPointMake(rand()%320, 480); [UIView commitAnimations]; //[self finish:imgView]; //특정함수를2초뒤 [self performSe..
[iOS] 뷰의 sub뷰 가져오기 NSArray* arr =vc.view.subviews; // 뷰 안에 서브뷰들을 배열로 가져옴 for(UIView* v in arr) { Class c = [v class]; NSLog(@"%@",NSStringFromClass(c)); if([v isKindOfClass:[UIButton class]]) // 서브뷰가 버튼이라면 { UIButton* btn = (UIButton*)v; NSString* title = btn.titleLabel.text; if ([title isEqualToString:@"btn1"]) // 버튼 타이틀이 btn1이라면 { [btn addTarget:self action:@selector(foo) forControlEvents:UIControlEventTouchUpIn..
[iOS] 구조 1. main.m맨 처음 파일wizard는 여기서 UIApplicationMain 함수를 반환한다. 2. UIApplicationMain 함수App과 관련된 delegate 함수를 받을 수 있는 클래스를 설정 함(기본적으로 wizard에서는 AppDelegate라고 만들어준다. 그래서 마지막인자를 AppDelegate class의 string으로 받는것) 3. AppDelegateUIApplication 객체가 보내는 이벤트를 처리할 객체NSObject가 아니라 NSResponder를 상속받음(제스쳐 관련 이벤트)UIApplicationDelegate 프로토콜을 구현한다. 4. 구조5. 코드로 viewController 호출하는 법 AppDelegate의 application: didFinishLaunc..