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

원하는 방향만 둥글게 하기


설명

뷰를 만들다 보면 전체를 둥글게 하는것이 아니라 특정 방향만 둥글게 해줘야 되는 경우가 있습니다. UIView 상속 받은 모든 컴포넌트에 해당되는 내용입니다.


사용환경

* Swift 4.2
* XCode 10.0


코드

// Swift // 오른쪽위와 오른쪽아래를 둥글게 let contentImage = UIView()
contentImage.frame = CGRectMake(64, 64, 55, 55)
contentImage.backgroundColor = UIColor.redColor()
let maskPath = UIBezierPath(roundedRect: contentImage.bounds, byRoundingCorners: [UIRectCorner.TopRight, UIRectCorner.BottomRight], cornerRadii: CGSizeMake(3.0, 3.0))
let maskLayer = CAShapeLayer()
maskLayer.frame = contentImage.bounds
maskLayer.path = maskPath.CGPath
contentImage.layer.mask = maskLayer
view.addSubview(contentImage)


// Objective-C
// 오른쪽위와 오른쪽아래를 둥글게
UIView * ContentImage = [[UIImageView alloc]initWithFrame:CGRectMake(64, 64, 55, 55)];
ContentImage.backgroundColor = [UIColor redColor];
UIBezierPath * maskPath;
maskPath = [UIBezierPath bezierPathWithRoundedRect:ContentImage.bounds byRoundingCorners:(UIRectCornerTopRight | UIRectCornerBottomRight) cornerRadii:CGSizeMake(3.0, 3.0)];
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
maskLayer.frame = ContentImage.bounds;maskLayer.path = maskPath.CGPath;
ContentImage.layer.mask = maskLayer;
[self.view addSubview:ContentImage];

둥글게 하고 싶은 모서리의 방향을 UIRectCorner 속성을 추가 해주시면 됩니다. UIRectCorne 종류는 밑에 표를 참조 하시면 됩니다.

Objective-C Swift
전체 UIRectCornerAllCorners UIRectCorner.allCorners
왼쪽 위 UIRectCornerTopLeft UIRectCorner.topLeft
왼쪽 아래 UIRectCornerBottomLeft UIRectCorner.bottomLeft
오른쪽 위 UIRectCornerTopRight UIRectCorner.topRight
오른쪽 아래 UIRectCornerBottomRight UIRectCorner.bottomRight

맞치며

작업을 하다보면 이미지 보다 UIView 또는 다른 컴포넌트 뷰를 이용해서 만드는 경우가 더 편하고 손쉽게 만들어지는 경우도 있습니다. 물론 단순 이미지보다는 손은 더 갑니다. 디자인을 보다보면 이쁜 디자인을 위해 둥근 모서리를 이용하는 경우가 많습니다. 위에 코드를 위해 원하는 모양을 손쉽게 만들수있습니다. 틀린점이나 궁금한점 있으시면 댓글을 남겨주세요. 감사합니다.

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


info.plist 내용 코드로 가져오기


설명

안녕하세요. 앱이름, 앱버전, 앱빌드정보등 앱을 만들면서 필수적으로 필요한 정보들이 있습니다. 물론 앱을 만들면서 적절히 활용도 할 수 있습니다. 기본적인 내용은 info.plist 파일에 있는 내용들을 코드로 가져와서 사용하는 부분입니다. 왼쪽에 file list에서 info.plist 파일을 선택한 후 XCode에 오른쪽 상단에 있는 버튼 중에 Comparison이라는 버튼을 클릭 하면 코드 형식으로 info.plist를 볼 수 있습니다. 그 내용을 코드로 가지고 와서 필요한 부분 꺼내서 쓰는 코드 입니다. 세팅값에 따라 가져 올수 있는 정보의 양이 많기 때문에 이 포스트에서는 앱이름, 앱버전, 앱빌드버전 그리고 앱이 지원하는 미니멈SDK버전만 가지고 오겠습니다.


사용환경

* Swift 4.0
* XCode 9.2

코드

옵셔널 형태로 가져오기 때문에 if문을 통해서 옵셔널을 벗겨서 사용을 해야 앱이 튕기지 않고 잘 사용 하실수 있습니다.

if let infoDic: [String: Any] = Bundle.main.infoDictionary {
    if let appName: String = infoDic["CFBundleName"] as? String { print("appName = \(appName)") }
    if let appVersion: String = infoDic["CFBundleShortVersionString"] as? String { print("appVersion = \(appVersion)") }
    if let appBuild: String = infoDic["CFBundleVersion"] as? String { print("appBuild - \(appBuild)") }
    if let minimumOSVersion: String = infoDic["MinimumOSVersion"] as? String { print("minimumOSVesion - \(minimumOSVersion)") }
} else {
    print("Not Info")
}
//출력 결과
appName = 노스모킹
appVersion = 1.0.0
appBuild - 1
minimumOSVesion - 9.0

맞치며

info.plist 파일에 있는 내용은 매우 중요한 정보들이 들어 있습니다. 코드로 가져왔던 앱버전,앱이름등등 사실 앱을 만들면서 코드로 가져와서 사용되는 부분이 극히 적을수 있습니다. 필요한 정보만 가지고 와서 활용을 하면 됩니다. 감사합니다. 틀린점이나 궁금한점 있으시면 댓글 남겨주세요 :)



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


리뷰 페이지로 이동하기

설명

앱을 평가받는 중요한 요소중 하나인 리뷰입니다. 리뷰를 쓸수 있게 유도하는것도 좋은 방법이고, iRate 라는 오픈소스를 통해 알트 창을 띄어 유도하는 방법도 있습니다. 앱스토어 리뷰 페이지로 이동 시켜주는 코드 입니다. 고유 아이디 부분에 어플 고유 아이디를 삽입 한후 실행 시키면 리뷰 페이지로 이동합니다. 앱 아이디는 아이튠즈 웹페이지에 들어가셔서 주소를 확인하면 뒤에 id부터 ?까지가 앱 아이디 입니다. 개발자 사이트에 나와있는 고유 아이디와 같습니다.


사용환경

* Swift 4.x
* Xcode 9.2

소스코드

YourAppID 부분에 아이튠즈에 나와있는 고유ID를 넣어주시면 됩니다. 출시전에도 앱의 고유아이디는 받아 올 수 있습니다.

if let reviewURL = URL(string: "itms-apps://itunes.apple.com/app/itunes-u/id\(YourAppID)?ls=1&mt=8&action=write-review"), UIApplication.shared.canOpenURL(reviewURL) { // 유효한 URL인지 검사합니다.
    if #available(iOS 10.0, *) { //iOS 10.0부터 URL를 오픈하는 방법이 변경 되었습니다.
        UIApplication.shared.open(reviewURL, options: [:], completionHandler: nil)
    } else {
        UIApplication.shared.openURL(reviewURL)
    }
}

맞치며

앱 개발자로서 좋은 리뷰를 받으면 정말 기분이 좋습니다. 내 앱에 대해서 평가가 안 좋을수도 있지만 리뷰를 통해 많은 분들이 앱이 나아가야 하는 방향등 여러가지를 가르쳐줍니다. 리뷰를 통해 발전된 앱을 유저들에게 제공하는 것도 앱개발자로서 역할인거 같습니다. 틀린점이나 궁금한 점 있으시면 언제든지 댓글로 알려주시면 대답해 드리겠습니다. 감사합니다.



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

안녕하세요. 정말 오랜만에 글을 쓰는거 같습니다. 

iOS10.. Swift3.0으로 넘어오면서 정말,, 베타 나오면 바로 개인적으로 해야되는데 

iOS개발을 한건 별로 안되지만 그래도 7부터 10까지 업뎃되면서 가장 많은 변화가 있지 않았나 싶을정도 변화가 많았습니다.

특히 Range에 부분이 많은 부분 변경 되었습니다. 

오늘 포스트 할 내용은 텍스트안에서 특정 텍스트의 시작 location을 찾는 것입니다.

Objective-C와 Swift2.3이하 버전에서는 뭐랄까 편하게 찾을 수 있었던거 같은데 3.0부터는 많은 변화가 있었습니다.

(2.3이하 버전은 제가 테스트 할 수 있는 환경이 없어서 적지 않았습니다 ㅠㅠ 죄송합니다.ㅠㅠ)


Objective-C

1
2
3
4
5
6
7
8
NSString * str = @"테스트 텍스트 입니다.";
NSString * search = @"텍스트"
NSRange range = [str rangeOfString:@"how are you doing"];
if (range.location == NSNotFound) {
    NSLog(@"없는 텍스트 입니다.");
else {
    NSLog(@"loc %d, len %d", range.location, range.length);        
}
cs



Swift3.0

1
2
3
4
5
6
7
8
let str = "테스트 텍스트 입니다"
let search = "텍스트"
        
let range: Range<String.Index> = str.range(of: search)!
let location : Int = str.distance(from: str.startIndex, to: range.lowerBound)
let length : Int = search.characters.count
        
print("loc \(location), len \(length)")
cs


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



안녕하세요.

정말 오랜만에 글을 쓰는 것 같습니다.


이번 포스트는 아이폰 무음 모드에서도 소리가 나는 방법에 대해서 입니다.

음악 앱 또는 유튜브등 여러 앱들은 무음모드에서도 재생시 소리가 납니다. 

세팅을 해주지 않으면 동영상만 재생 될뿐 소리는 아무소리도 안나옵니다.

재생되기전 또는 ViewDidLoad()에 이 코드를 삽입 해주면 무음모드에서도 소리가 재생 됩니다.


(Obective-C)

1
2
3
AVAudioSession * session = [AVAudioSession sharedInstance];
[session setCategory: AVAudioSessionCategoryPlayback error: nil];
 
cs


(Swift)

1
2
3
4
5
6
do {
    try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
    try AVAudioSession.sharedInstance().setActive(true)
catch {
    print(error)
}
cs



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

OS_ACTIVITY_MODE  (0) 2016.11.08
iOS)텍스트 위치 가져오기  (0) 2016.10.10
iOS)사진첩에 사진 저장하기  (0) 2016.06.12
iOS)디바이스 정보 가져오기  (0) 2016.06.08
iOS)딕셔너리 키값 정렬 하기  (0) 2016.06.06
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 크기의 광고 코드만 넣을 수 있습니다.



두번째로 소개할 App은 마이폰북입니다.

아이폰의 기본적인 전화번호부는 초성검색을 지원하지 않습니다. 

그 불편함을 해소 하기 위해서 제작한 전화번호부 앱입니다.



마이폰북 - 초성검색, 빠른검색


지원 OS - iOS


가격 - 무료


기능

  • 전화번호부 빠른 검색 및 초성 검색 가능
  • 전용 키패드를 통한 빠른 검색 및 전화 통화
  • 자세히 보기를 통해 해당 사람의 전체 번호 보기
  • 다이렉트 전화 및 문자 보내기


스크린샷




'App 소개' 카테고리의 다른 글

[iOS]몸무게매니저 - 몸무게를 효과적으로 관리  (0) 2018.07.16
[iOS]내주변화장실  (0) 2018.07.14
[iOS]콘티메이크  (1) 2017.05.29
[iOS]워드북-영어편  (2) 2016.06.14
[iOS, Android] 노스모킹 - 금연 어플  (0) 2016.04.18
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



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

NSMutableDictionary, NSDictionary을 사용 할때 키값을 이용해서 필요한 값을 꺼내서 사용하는데, 전체 키값을 정렬해야 하는 상황이 있습니다.

그때 딕셔너리의 전체 키값을 가지고 와서 내림차순 또는 오름차순으로 정렬해주는  방법입니다.


(Obejctive-C)

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
26
27
28
29
NSMutableDictionary * dic = [[NSMutableDictionary alloc]init];
[dic setObject:@"2" forKey:@"key2"];
[dic setObject:@"1" forKey:@"key1"];
[dic setObject:@"4" forKey:@"key4"];
[dic setObject:@"3" forKey:@"key3"];
    
//오름차순
NSArray * arr_ascending = [dic keysSortedByValueUsingComparator: ^(id obj1, id obj2) {
    if ([obj1 integerValue] > [obj2 integerValue]) {
        return (NSComparisonResult)NSOrderedDescending;
    }
    if ([obj1 integerValue] < [obj2 integerValue]) {
        return (NSComparisonResult)NSOrderedAscending;
    }
    return (NSComparisonResult)NSOrderedSame;
}];
NSLog(@"%@", arr_ascending);
    
//내림 차순
NSArray * arr_descending = [dic keysSortedByValueUsingComparator: ^(id obj1, id obj2) {
    if ([obj1 integerValue] < [obj2 integerValue]) {
        return (NSComparisonResult)NSOrderedDescending;
    }
    if ([obj1 integerValue] > [obj2 integerValue]) {
        return (NSComparisonResult)NSOrderedAscending;
    }
    return (NSComparisonResult)NSOrderedSame;
}];
NSLog(@"%@", arr_descending);
cs



(Swift)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
let dic = NSMutableDictionary()
        dic.setObject("2", forKey: "key2")
        dic.setObject("1", forKey: "key1")
        dic.setObject("4", forKey: "key4")
        dic.setObject("3", forKey: "key3")
        
print(dic)
        
let arr_key = dic.allKeys.sort {
    //오름차순
    //$0.compare($1 as! String, options: .NumericSearch) == .OrderedAscending
    
    //내림차순
    $0.compare($1 as! String, options: .NumericSearch) == .OrderedDescending
}
 
print(arr_key)
cs




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

iOS)사진첩에 사진 저장하기  (0) 2016.06.12
iOS)디바이스 정보 가져오기  (0) 2016.06.08
iOS)랜덤 함수  (0) 2016.05.26
iOS)TTS(Text-to-Speech) 사용하기.  (0) 2016.05.19
iOS)iPhone 해상도  (0) 2016.05.09
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