336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


iOS 키보드 타입

안녕하세요. 개발자 Myoung 입니다.
오늘은 iOS 키보드 타입에 대한 포스팅입니다. Objective-C,Swift 둘다 해당되는 타입형태입니다. UITextFeild, UITextView등 키보드를 사용하는 뷰에서 사용됩니다.



키보드 타입 종류

typedef enum {
        UIKeyboardTypeDefault,                  // 기본적인 키보드
        UIKeyboardTypeASCIICapable,             // 영문만 표시되는 키보드
        UIKeyboardTypeNumbersAndPunctuation,    // 숫자와 특수문자가 표시되는 키보드
        UIKeyboardTypeURL,                      // URL을 입력할 수 있도록 .과 / 그리고 .com이 키보드 영역에 표시되는 키보드
        UIKeyboardTypeNumberPad,                // 숫자를 입력하는 키패드 형식의 키보드
        UIKeyboardTypePhonePad,                 // 전화 번호를 입력할 수 있는 키패드 형식의 키보드
        UIKeyboardTypeNamePhonePad,             // 대문자 입력이 불가한 키보드
        UIKeyboardTypeEmailAddress,             // 이메일을 입력할 수 있도록 @와 .이 키보드 영역에 표시되는 키보드
        UIKeyboardTypeDecimalPad,               // 소숫점을 입력할 수 있는 키패드 형식의 키보드
        UIKeyboardTypeTwitter,                  // 트위터 입력을 빠르게 할 수 있도록 @와 #이 추가된 키보드
        UIKeyboardTypeWebSearch,                // URL 및 검색어 입력에 최적화 됨 (공백 및. 표시)
        UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable, // 더 이상 사용 안함
    } UIKeyboardType;


사용법

사용법은 매우 간단 합니다. 코드로는 setKeyboardType을 사용하시면 됩니다.

ObjectiveC

[textField setKeyboardType:UIKeyboardTypeEmailAddress]

Swift

textField.keyboardType = .default

스토리 보드 상에서는 UITextFeild, UITextView View에 추가 하신 후 오른쪽 항목에서 보시면 KeyBoard Type이 있습니다. 거기서 적절하게 선택 해주시면 됩니다.



336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



안녕하세요. iOS 개발을 하고 있는 Myoung 입니다.


UI를 그리다보면 BorderWidth 와 BorderColor를 이용해서 View의 테투리를 그려줄때가 많습니다.

일반적으로 border를 이용해서 그리는 방법은 이렇게 사용을 합니다. 그럼 테투리가 자연스럽게 Width 만큼생기게 되죠.

1
2
3
4
let view = UIView(frame: CGRect(x: 0, y: 0, width: 50, height: 50))
view.layer.borderColor = UIColor.red.cgColor
view.layer.borderWidth = 1.0
view.addSubview(view)
cs


하지만 UI를 그리다보면 한쪽만 혹은 한쪽을 남겨두고 그릴때가 있습니다. 

extension을 통해 CALayer에 메소드를 추가해줍니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
extension CALayer {
    func addBorder(_ arr_edge: [UIRectEdge], color: UIColor, width: CGFloat) {
        for edge in arr_edge {
            let border = CALayer()
            switch edge {
            case UIRectEdge.top:
                border.frame = CGRect.init(x: 0, y: 0, width: frame.width, height: width)
                break
            case UIRectEdge.bottom:
                border.frame = CGRect.init(x: 0, y: frame.height - width, width: frame.width, height: width)
                break
            case UIRectEdge.left:
                border.frame = CGRect.init(x: 0, y: 0, width: width, height: frame.height)
                break
            case UIRectEdge.right:
                border.frame = CGRect.init(x: frame.width - width, y: 0, width: width, height: frame.height)
                break
            default:
                break
            }
            border.backgroundColor = color.cgColor;
            self.addSublayer(border)
        }
    }
}
cs


사용법은 간단합니다. 원하는 뷰에 layer를 통해서 사용 하시면 됩니다. 

1
your_view.layer.addBorder([.top, .bottom], color: UIColor.white, width: 1.0)
cs

UIRectEdge의 속성은 총 다섯개가 있습니다.

1
2
3
4
5
UIRectEdge.all, //전체 
UIRectEdge.top, //상단
UIRectEdge.bottom, //하단
UIRectEdge.left, //왼쪽
UIRectEdge.right, //오른쪽
cs

원하는 방향을 Array로 묶어서 layer를 통해 추가해주시면 됩니다. 이왕이면.. 한쪽만 뻥뚫린 UI가 없었으면 하지만 생각보다 간단하게 해결 할 수 있습니다.


틀린점이나 오타 부족한점이 있으면 언제든지 댓글를 남겨주세요.



336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



안녕하세요. 오랜만에 글을 남깁니다.

연말인데 올해 계획을 잘 마무리 짓고 계신가요? 


오늘은 iOS의 퍼미션 종류를 알아보겠습니다. iOS10부터는 퍼미션 항목을 빼먹으면 검사 후 아예 아이튠즈에 안 올라가고, 바로 추가해 달라고 등록된 메일이 옵니다.

앱을 만들다보면 퍼미션을 까먹고 사진을 불러온다던가 위치를 알아올때 왜 안 가져오지 하면서 구글 검색을 하기 마련입니다. (아닌가요..?ㅎㅎ) 

퍼미션 종류와 info.plist에 들어가는 이름입니다.


  • (블루투스)Bluetooth Sharing – NSBluetoothPeripheralUsageDescription 
  • (달력)Calendar – NSCalendarsUsageDescription
  • (전화 관련)CallKit – NSVoIPUsageDescription
  • (카메라)Camera – NSCameraUsageDescription
  • (연락처)Contacts – NSContactsUsageDescription
  • (건강)Health – NSHealthShareUsageDescription & NSHealthUpdateUsageDescription
  • (홈킷)HomeKit – NSHomeKitUsageDescription
  • (위치)Location – NSLocationUsageDescription, NSLocationAlwaysUsageDescription, NSLocationWhenInUseUsageDescription
  • (미디어 라이브러리)Media Library – NSAppleMusicUsageDescription
  • (마이크)Microphone – NSMicrophoneUsageDescription
  • (모션)Motion – NSMotionUsageDescription
  • (사진, 앨범)Photos – NSPhotoLibraryUsageDescription
  • (미리알림)Reminders – NSRemindersUsageDescription
  • (음성 인식)Speech Recognition – NSSpeechRecognitionUsageDescription
  • (시리킷)SiriKit – NSSiriUsageDescription
  • (TV 프로 바이더)TV Provider – NSVideoSubscriberAccountUsageDescription


까먹지 말고 추가해주시면 될거 같습니다.

마지막까지 계획하신거 잘 마무리 하시고 2017년을 맞이하는 개발자가 되었으면 합니다.!



336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



XCode 8 버전 부터 OS_ACTIVITY_MODE가 추가 되었습니다.

os의 시스템관련 로그를 쭉 출력 해주는 모드인데 너무 많이 찍혀서 정작 

제가 개발을 하면서 출력하는 로그는 하나도 볼 수 없다는 단점있습니다.

안보이게 하는 방법은 생각보다 간단합니다.

1. product -> Scheme -> edit scheme -> environment Variables


2. environment Variables에 +클릭해서


3. Name 값에 OS_activity_mode 

    Value 값에 disable 


넣어 주시면 됩니다. 그럼 더이상 시스템 로그는 출력되지 않습니다.



336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



안녕하세요. 

저는 iOS 개발을 하다보니깐 XCode를 가지고 개발을 합니다. 

회사 프로젝트라던지, 개인 프로젝트라던지 가끔 엉뚱하게도 "내가 짠 코드는 과연 몇줄일까??" 라는 생각을 하게됩니다.. ㅎㅎ (저만 그런건가요,,)


일단 터미널을 열고 라인 수를 보고자하는 프로젝트 폴더로 cd 명령어를 쳐서 들어갑니다.

cd를 치시고 한칸 뛴다음 폴더를 끌어 넣고 엔터를 치면 폴더 디렉토리로 이동하게 됩니다. (저는 잘 몰라서 일일히 찾아서 들어갔습니다.)


이제 그런후 밑에 명령어를 복사 붙여 넣기 하시면 됩니다.


Swift 만 사용 하셨다면

1
find . \( -iname \*.swift \) -exec wc -l '{}' \+
cs


Objective-C만 사용 하셨다면

1
find . \( -iname \*.m -o -iname \*.mm -o -iname \*.h \) -exec wc -l '{}' \+
cs


Swift와 Objective-C를 혼용해서 사용 하셨다면

1
find . \( -iname \*.m -o -iname \*.mm -o -iname \*.h -o -iname \*.swift \) -exec wc -l '{}' \+
cs


그리고 마지막으로 

Swift + Objective-C + C + C++

1
find . \( -iname \*.m -o -iname \*.mm -o -iname \*.c -o -iname \*.cc -o -iname \*.h -o -iname \*.hh -o -iname \*.hpp -o -iname \*.cpp -o -iname \*.swift \) -exec wc -l '{}' \+
cs


이렇게 명령어를 치시면 프로젝트에 포함되어 있는 파일 목록들이 나열되면서 마지막에 total 값으로 라인수가 나옵니다.


제가 Project9팀에 있을때 했던 프로젝트 결과값입니다. 3만5천 줄로 나오네요. 

아무래도 Pod나 framework도 포함 되다 보니깐 조금 과장되서 나오는 것도 없진 않지만 그래도 가끔 얼마나 길까 하면서 

알아볼때 유용하게 사용 할 수 있는것 같습니다.



출처 

http://stackoverflow.com/questions/7224569



'프로그래밍 > 기타' 카테고리의 다른 글

Color Scripter (코드를 블로그에 올리기)  (0) 2015.11.18
앱 개발에서의 권한 문제  (0) 2015.11.18
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



안녕하세요. 개발자 myoung입니다.

개발을 완료 한 후 정말 역사적으로 앱스토어에 앱을 올릴려고 하는데 ENABLE_BITCODE 오류가 나서 당황할때가 있습니다.

그냥 개발을 할때는 문제가 없는데 말입니다.ㅠㅠ 이럴때는 당황하시지 말고

'Build Settings'에 있는 'Enable Bitcode'를 YES로 바꿔주시면 됩니다.


반대로 이런 오류가 난다면

You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture arm64...

'Enable Bitcode' 옵션을 NO로 해주시면 됩니다.


BitCode 란?

Bitcode is an intermediate representation of a compiled program. Apps you upload to iTunes Connect that contain bitcode will be compiled and linked on the store. Including bitcode will allow Apple to re-optimize your app binary in the future without the need to submit a new version of your app to the store. For iOS apps, bitcode is the default, but optional. For watchOS and tvOS apps, bitcode is required. If you provide bitcode, all apps and frameworks in the app bundle (all targets in the project) need to include bitcode


비트 코드는 컴파일  프로그램의 중간 표현입니다비트 코드를 포함하면 아이튠즈 커넥트에 업로드앱은 컴파일 저장소에 연결됩니다비트 코드를 포함하면 애플 스토어에 앱의  버전을 제출할 필요 없이 미래에  바이너리를 다시 최적화할  있고iOS 앱의 경우 비트 코드 옵션은 선택 사항이고, watchOS  tvOS 앱의 비트 코드가 필수로 적용되어야 한다.  - iOS Developer Library



336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



안녕하세요 개발자 myoung 입니다. Swift 기준으로 설명을 하겠습니다.


URL nil 오류 나는 문제에 대해서 해결 방안을 알아보겠습니다.

보통 URL을 정의 할때는 이렇게 정의를 합니다.

1
2
let urlPath: String = "www.naver.com"
let url: NSURL = NSURL(string: urlPath)!
cs

물론 URL 자체가 비어 있어서 nil오류가 나는 경우도 있지만 주소 자체에 한글이 포함된 경우 nil 오류가 나는 경우가 있습니다.

그런경우 해결 방법은

1
2
3
4
let str_temp = "http://devsc.tistory.com/admin/entry/post/한글"
let str_url = str_temp.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())!
 
let url: NSURL = NSURL(string: str_url)!
cs

이런식으로 String URLQueryAllowedCharacterSet을 통해 인코딩을 하면 간단하게 해결됩니다.


궁금한점이나 오류가 있으면 댓글을 달아주세요 :)



336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



안녕하세요. 개발자 myoung 입니다. 

오늘은 저장하고 싶은 이미지를 사진 앱에 노출이 될수 있도록 저장하는 방법에 대해서 알아보겠습니다.

다른 특별한 옵션을 주지 않고 단순하게 사진을 저장할때 사용 할수있는 방법입니다.

생각보다 너무 간단하고 한줄로 끝납니다.


(Obejctive-C)

1
2
3
4
5
6
7
8
9
10
11
//필요한 부분에서 호출
UIImageWriteToSavedPhotosAlbum(your_image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);

- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo {
    if (error) {
        NSLog(@"error: %@", [error localizedDescription]);
    } else {
        NSLog(@"saved");
    }
}
cs


(Swift)

1
2
3
4
5
6
7
8
9
10
11
12
//필요한 부분에서 호출
UIImageWriteToSavedPhotosAlbum(img, self, #selector(image(_:didFinishSavingWithError:contextInfo:)), nil)
 
func image(_ image: UIImage, didFinishSavingWithError error: NSError?, contextInfo: UnsafeRawPointer) { 
       //사진 저장 한후
       if let error = error {
           // we got back an error!
           Toast(message: error.localizedDescription).show()  
       } else {
            // save    
       }
}
cs


궁금한점이나 틀린점이 있으면 언제든지 댓글을 달아 주세요. :)



'iOS 프로그래밍 > iOS' 카테고리의 다른 글

iOS)텍스트 위치 가져오기  (0) 2016.10.10
iOS)무음에서 소리 나오게 하기  (0) 2016.07.19
iOS)디바이스 정보 가져오기  (0) 2016.06.08
iOS)딕셔너리 키값 정렬 하기  (0) 2016.06.06
iOS)랜덤 함수  (0) 2016.05.26
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



안녕하세요. 개발자 myoung 입니다.

오늘은 iOS의 사용자 기기이름, 버전등을 가지고 올때 사용하는 currentDevice에 대해서 포스팅 하겠습니다.

애플 문서를 보게 되면

1
2
3
4
5
6
7
public var name: String { get } // e.g. "My iPhone"
public var model: String { get } // e.g. @"iPhone", @"iPod touch"
public var localizedModel: String { get } // localized version of model
public var systemName: String { get } // e.g. @"iOS"
public var systemVersion: String { get } // e.g. @"4.0"
public var orientation: UIDeviceOrientation { get } 
// return current device orientation.  this will return UIDeviceOrientationUnknown unless device orientation notifications are being generated.
cs


UIDevice 하위에 포함되어 있는 메소드 이며, 현재 디바이스에 대한 정보를 리턴해주는 메소드 입니다.

단일 객체로 이름, 모델, 모델의 지역 버전, 시스템이름, 시스템버전,  디바이스 현재 방향 String 객체를 리턴해주는 것을 알 수 있습니다.

이런식으로 사용 하시면 됩니다.


(Objective-C)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
NSLog(@"%@", [UIDevice currentDevice].name);
NSLog(@"%@", [UIDevice currentDevice].model);
NSLog(@"%@", [UIDevice currentDevice].localizedModel);
NSLog(@"%@", [UIDevice currentDevice].systemName);
NSLog(@"%@", [UIDevice currentDevice].systemVersion);
NSLog(@"%ld", (long)[UIDevice currentDevice].orientation)
 
//결과 값
iPhone Simulator
iPhone
iPhone
iPhone OS
9.3
0
cs


(swift)

1
2
3
4
5
6
7
8
9
10
11
12
13
print(UIDevice.currentDevice().name)
print(UIDevice.currentDevice().model)
print(UIDevice.currentDevice().localizedModel)
print(UIDevice.currentDevice().systemName)
print(UIDevice.currentDevice().systemVersion)
print(UIDevice.currentDevice().orientation)
        
//결과 값
iPhone Simulator
iPhone
iPhone
iPhone OS
9.3
cs

궁금한 점이나 틀린 부분이 있다면 댓글을 남겨 주세요!



'iOS 프로그래밍 > iOS' 카테고리의 다른 글

iOS)무음에서 소리 나오게 하기  (0) 2016.07.19
iOS)사진첩에 사진 저장하기  (0) 2016.06.12
iOS)딕셔너리 키값 정렬 하기  (0) 2016.06.06
iOS)랜덤 함수  (0) 2016.05.26
iOS)TTS(Text-to-Speech) 사용하기.  (0) 2016.05.19
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



일반 앱을 만들때는 쓸일이 별로 없을 것 같은 랜덤 함수지만 쓰임새가 아주 많은 함수입니다. 

숫자 10에 위치한 곳에 원하는 숫자를 넣어 주시면 됩니다. 

만약 10을 넣고 돌리시면 0~10까지 사이에서 랜덤하게 숫자가 randomIndex 변수에 저장됩니다.


(Objective-C)

1
int randomIndex = arc4random() % 10;
cs


(Swift)

1
let randomIndex : Int = Int(arc4random_uniform(10))
cs



'iOS 프로그래밍 > iOS' 카테고리의 다른 글

iOS)디바이스 정보 가져오기  (0) 2016.06.08
iOS)딕셔너리 키값 정렬 하기  (0) 2016.06.06
iOS)TTS(Text-to-Speech) 사용하기.  (0) 2016.05.19
iOS)iPhone 해상도  (0) 2016.05.09
iOS)단어 정의 사전으로 찾기  (0) 2016.05.04

+ Recent posts