'IOS > 예제모음' 카테고리의 다른 글
swift array to Set (0) | 2017.07.17 |
---|---|
swift 연산자 모음 예제들 (0) | 2017.07.17 |
swift 로 몇분전,몇시간전등으로 표기하는 예제 (0) | 2017.05.11 |
권한 예제 모음 (0) | 2017.04.25 |
swift 카메라 및 갤러리 접근 코드 소스 (0) | 2017.04.20 |
swift array to Set (0) | 2017.07.17 |
---|---|
swift 연산자 모음 예제들 (0) | 2017.07.17 |
swift 로 몇분전,몇시간전등으로 표기하는 예제 (0) | 2017.05.11 |
권한 예제 모음 (0) | 2017.04.25 |
swift 카메라 및 갤러리 접근 코드 소스 (0) | 2017.04.20 |
터미널 열고
defaults write com.apple.dt.XCode IDEIndexDisable 1
background thread 종류 (0) | 2017.07.14 |
---|---|
array union, intersection 관련내용 (0) | 2017.06.30 |
xcode pod 파일들이 엉켰을때.. (0) | 2017.06.29 |
스위프트 공부 참고 사이트 (0) | 2017.04.10 |
스위프트 추천 기술들 (0) | 2017.04.10 |
extension Array {
func mapArray<T>(_ transform: (Array) -> T) -> T {
return transform(self)
}
}
Then you can pass in the Set initializer to the new mapArray
function
objectArray
.map({ $0.URL })
.mapArray(Set.init)
ios xcode 스토리보드 깔끔하게 사용하는 팁 (0) | 2017.08.07 |
---|---|
swift 연산자 모음 예제들 (0) | 2017.07.17 |
swift 로 몇분전,몇시간전등으로 표기하는 예제 (0) | 2017.05.11 |
권한 예제 모음 (0) | 2017.04.25 |
swift 카메라 및 갤러리 접근 코드 소스 (0) | 2017.04.20 |
출처 : http://codeman77.tistory.com/82
import UIKit;
// 홀수 집합
let oddNumberSet : Set = [ 1, 3, 5, 7, 9 ];
// 짝수 집합
let evenNumberSet : Set = [ 0, 2, 4, 6, 8 ];
// 소수 집합
let primeNumberSet : Set = [ 2, 3, 5, 7 ];
// 연산 결과를 저장할 집합
var resultNumberSet : Set = Set<Int>();
// 교집합(Intersection) : 두 집합의 공통된 요소
print("홀수, 짝수 교집합");
resultNumberSet = oddNumberSet.intersection(evenNumberSet);
// []
for i in resultNumberSet.sorted(){
print(i);
}
resultNumberSet.removeAll();
print();
print("홀수, 소수 교집합");
resultNumberSet = oddNumberSet.intersection(primeNumberSet);
// [ 3, 5, 7 ]
for i in resultNumberSet.sorted(){
print(i);
}
resultNumberSet.removeAll();
print();
// 차집합(Subtract) : 한쪽 집합에만 있는 요소
print("홀수, 짝수 차집합");
resultNumberSet = oddNumberSet.subtracting(evenNumberSet);
// [ 1, 3, 5, 7, 9 ]
for i in resultNumberSet.sorted(){
print(i);
}
resultNumberSet.removeAll();
print();
print("홀수, 소수 차집합");
resultNumberSet = oddNumberSet.subtracting(primeNumberSet);
// [ 1, 9 ]
for i in resultNumberSet.sorted(){
print(i);
}
resultNumberSet.removeAll();
print();
// 합집합(Union) : 양쪽 집합에 있는 모든 요소
print("홀수, 짝수 합집합");
resultNumberSet = oddNumberSet.union(evenNumberSet);
// [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
for i in resultNumberSet.sorted(){
print(i);
}
resultNumberSet.removeAll();
print();
print("홀수, 소수 합집합");
resultNumberSet = oddNumberSet.union(primeNumberSet);
// [ 1, 2, 3, 5, 7, 9 ]
for i in resultNumberSet.sorted(){
print(i);
}
resultNumberSet.removeAll();
print();
// 대칭차(Symmetric Difference) : 두 집합의 상대 여집합의 합, 합집합에서 교집합을 뺀 것
print("홀수, 짝수 대칭차");
resultNumberSet = oddNumberSet.symmetricDifference(evenNumberSet);
// [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
for i in resultNumberSet.sorted(){
print(i);
}
resultNumberSet.removeAll();
print();
print("홀수, 소수 대칭차");
resultNumberSet = oddNumberSet.symmetricDifference(primeNumberSet);
// [ 1, 2, 9 ]
for i in resultNumberSet.sorted(){
print(i);
}
resultNumberSet.removeAll();
print();
실행 결과
출처: http://codeman77.tistory.com/82 [☆]
출처: http://codeman77.tistory.com/82 [☆]
ios xcode 스토리보드 깔끔하게 사용하는 팁 (0) | 2017.08.07 |
---|---|
swift array to Set (0) | 2017.07.17 |
swift 로 몇분전,몇시간전등으로 표기하는 예제 (0) | 2017.05.11 |
권한 예제 모음 (0) | 2017.04.25 |
swift 카메라 및 갤러리 접근 코드 소스 (0) | 2017.04.20 |
Creating a concurrent queue
let concurrentQueue = DispatchQueue(label: "queuename", attributes: .concurrent)
concurrentQueue.sync {
}
Create a serial queue
let serialQueue = DispatchQueue(label: "queuename")
serialQueue.sync {
}
Get main queue asynchronously
DispatchQueue.main.async {
}
Get main queue synchronously
DispatchQueue.main.sync {
}
To get one of the background thread
DispatchQueue.global(attributes: .qosDefault).async {
}
Xcode 8.2 beta 2:
To get one of the background thread
DispatchQueue.global(qos: .default).async {
}
DispatchQueue.global().async {
// qos' default value is ´DispatchQoS.QoSClass.default`
}
If you want to learn about using these queues .See this answer
xcode 인덱싱 비활성화.. (0) | 2017.08.04 |
---|---|
array union, intersection 관련내용 (0) | 2017.06.30 |
xcode pod 파일들이 엉켰을때.. (0) | 2017.06.29 |
스위프트 공부 참고 사이트 (0) | 2017.04.10 |
스위프트 추천 기술들 (0) | 2017.04.10 |
출처 : https://stackoverflow.com/a/36839785
You may to use ActivityIndicator from RxSwift repo. I using MBProgressHUD in my project. At first you need to create extension for this library:
extension MBProgressHUD {
/**
Bindable sink for MBProgressHUD show/hide methods.
*/
public var rx_mbprogresshud_animating: AnyObserver<Bool> {
return AnyObserver { event in
MainScheduler.ensureExecutingOnScheduler()
switch (event) {
case .Next(let value):
if value {
let loadingNotification = MBProgressHUD.showHUDAddedTo(UIApplication.sharedApplication().keyWindow?.subviews.last, animated: true)
loadingNotification.mode = self.mode
loadingNotification.labelText = self.labelText
loadingNotification.dimBackground = self.dimBackground
} else {
MBProgressHUD.hideHUDForView(UIApplication.sharedApplication().keyWindow?.subviews.last, animated: true)
}
case .Error(let error):
let error = "Binding error to UI: \(error)"
#if DEBUG
rxFatalError(error)
#else
print(error)
#endif
case .Completed:
break
}
}
}
}
Next you need to create ActivityIndicator object in your ViewController class:
let progress = MBProgressHUD()
progress.mode = MBProgressHUDMode.Indeterminate
progress.labelText = "Loading..."
progress.dimBackground = true
let indicator = ActivityIndicator()
indicator.asObservable()
.bindTo(progress.rx_mbprogresshud_animating)
.addDisposableTo(bag)
Next just use trackActivity() function into your sequences:
apiMethod
.trackActivity(indicator)
.subscribeNext { stringArray in
items.value = stringArray
}
.addDisposableTo(bag)
[ReactiveX][RxSwift]flatMap, flatMapFirst, flatMapLatest (0) | 2017.04.13 |
---|
es, Swift has the Set
class.
let array1 = ["a", "b", "c"]
let array2 = ["a", "b", "d"]
let set1:Set<String> = Set(array1)
let set2:Set<String> = Set(array2)
Swift 3.0+ can do operations on sets as:
firstSet.union(secondSet)// Union of two sets
firstSet.intersection(secondSet)// Intersection of two sets
firstSet.symmetricDifference(secondSet)// exclusiveOr
Swift 2.0 can calculate on array arguments:
set1.union(array2) // {"a", "b", "c", "d"}
set1.intersect(array2) // {"a", "b"}
set1.subtract(array2) // {"c"}
set1.exclusiveOr(array2) // {"c", "d"}
Swift 1.2+ can calculate on sets:
set1.union(set2) // {"a", "b", "c", "d"}
set1.intersect(set2) // {"a", "b"}
set1.subtract(set2) // {"c"}
set1.exclusiveOr(set2) // {"c", "d"}
xcode 인덱싱 비활성화.. (0) | 2017.08.04 |
---|---|
background thread 종류 (0) | 2017.07.14 |
xcode pod 파일들이 엉켰을때.. (0) | 2017.06.29 |
스위프트 공부 참고 사이트 (0) | 2017.04.10 |
스위프트 추천 기술들 (0) | 2017.04.10 |
rm -rf Pods/ Podfile.lock
pod install
xcode 인덱싱 비활성화.. (0) | 2017.08.04 |
---|---|
background thread 종류 (0) | 2017.07.14 |
array union, intersection 관련내용 (0) | 2017.06.30 |
스위프트 공부 참고 사이트 (0) | 2017.04.10 |
스위프트 추천 기술들 (0) | 2017.04.10 |
출처 : http://mtsparrow.blogspot.kr/2016/02/swift-5-days-ago.html
몇일전
몇시간전
몇분전
등등...
이런 정보를 표시해야 하는 경우가 있다.
NSDate의 extension으로 다음과 같이 구현 한다음
이를 이용하면 가능 하다.
swift array to Set (0) | 2017.07.17 |
---|---|
swift 연산자 모음 예제들 (0) | 2017.07.17 |
권한 예제 모음 (0) | 2017.04.25 |
swift 카메라 및 갤러리 접근 코드 소스 (0) | 2017.04.20 |
swift 화면 이동 (0) | 2017.04.18 |
출처 : http://blog.daum.net/hans1991/3
최근에 업데이트 된 xcode 8로 앱을 앱스토에 업로드할 경우 앱에서 사용되는 권한을 info.plist에 반드시 지정해야 합니다.
이를 설정하지 않고
1. 앱을 itunesconnect에 업로드할 경우 오류로 인하여 정상등록되지 않고 해당 애플 계정으로 오류 메일이 전송됩니다.
2. iOS 10 디바이스에서 실행할 경우 권한을 필요로 하는 곳에서 앱이 죽는 현상이 발생합니다.
* info.plist에 권한 추가하기
1) 포토앨범 사용하는 경우 : "Privacy - Photo Library Usage Description" 키 추가
2) 카메라를 사용하는 경우 : "Privacy - Camera Usage Description" 키 추가
3) 주소록을 사용하는 경우 : "Privacy - Contacts Usage Description" 키 추가
4) 음악을 사용하는 경우 : "Privacy - Music Usage Description" 키 추가
5) 우치기반, Bluetooth, 달력 등.....을 사용할 경우에도 해당 권한을 추가해 줘야 합니다...
각 키를 추가한 다음에 description을 지정해 줘야 하는데(꼭 필요한 것은 아님 꼭 필요하네요. 이걸 추가하지 않으면 심사를 위해 앱을 등록할 때 오류가 발생합니다..) 여기에 사용된 문자열이 권한을 요구할 때 같이 표시됩니다.
#참고... info.plist 에 키 등록 후 description 등록된 모습
[그림1] Description이 없는 경우 [그림2] Description이 있는 경우
swift 연산자 모음 예제들 (0) | 2017.07.17 |
---|---|
swift 로 몇분전,몇시간전등으로 표기하는 예제 (0) | 2017.05.11 |
swift 카메라 및 갤러리 접근 코드 소스 (0) | 2017.04.20 |
swift 화면 이동 (0) | 2017.04.18 |
IOS 멋진 예제 모음 사이트 (0) | 2017.04.17 |
import UIKit
class ViewController: UIViewController,
UIImagePickerControllerDelegate,
UINavigationControllerDelegate
{
let picker = UIImagePickerController()
@IBOutlet weak var myImageView: UIImageView!
@IBAction func photoFromLibrary(_ sender: UIBarButtonItem) {
picker.allowsEditing = false
picker.sourceType = .photoLibrary
picker.mediaTypes = UIImagePickerController.availableMediaTypes(for: .photoLibrary)!
picker.modalPresentationStyle = .popover
present(picker, animated: true, completion: nil)
picker.popoverPresentationController?.barButtonItem = sender
}
@IBAction func shootPhoto(_ sender: UIBarButtonItem) {
if UIImagePickerController.isSourceTypeAvailable(.camera) {
picker.allowsEditing = false
picker.sourceType = UIImagePickerControllerSourceType.camera
picker.cameraCaptureMode = .photo
picker.modalPresentationStyle = .fullScreen
present(picker,animated: true,completion: nil)
} else {
noCamera()
}
}
func noCamera(){
let alertVC = UIAlertController(
title: "No Camera",
message: "Sorry, this device has no camera",
preferredStyle: .alert)
let okAction = UIAlertAction(
title: "OK",
style:.default,
handler: nil)
alertVC.addAction(okAction)
present(
alertVC,
animated: true,
completion: nil)
}
override func viewDidLoad() {
super.viewDidLoad()
picker.delegate = self
}
//MARK: - Delegates
func imagePickerController(_ picker: UIImagePickerController,
didFinishPickingMediaWithInfo info: [String : AnyObject])
{
var chosenImage = UIImage()
chosenImage = info[UIImagePickerControllerOriginalImage] as! UIImage //2
myImageView.contentMode = .scaleAspectFit //3
myImageView.image = chosenImage //4
dismiss(animated:true, completion: nil) //5
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
dismiss(animated: true, completion: nil)
}
}
swift 로 몇분전,몇시간전등으로 표기하는 예제 (0) | 2017.05.11 |
---|---|
권한 예제 모음 (0) | 2017.04.25 |
swift 화면 이동 (0) | 2017.04.18 |
IOS 멋진 예제 모음 사이트 (0) | 2017.04.17 |
이미지 체인저를 이용한 소스 (0) | 2017.02.11 |
storyboard 를 사용해서 간단하게 화면이동이 가능하지만, 조건문과 함께 사용할때는 코드로 이동하는 것이 편할때가 있다.
같은 스토리보드내에 있는 다른 뷰로 이동하는 경우
// nextViewController.swift 인 경우
let storyboard: UIStoryboard = self.storyboard!
let nextView = storyboard.instantiateViewController(withIdentifier: "nextViewController")
self.present(nextView, animated: true, completion: nil)
현재와 다른 스토리보드에 있는 뷰로 이동하는 경우
xcode 상에서 is Initial View Controller 에 체크를 해도 되지만,
아래와 같이 name 파라미터에 스토리보드의 이름을 넣어도 된다.
// 파일명이 Next.storyboard 인 경우
let storyboard: UIStoryboard = UIStoryboard(name: "Next", bundle: nil)
let nextView = storyboard.instantiateInitialViewController()
self.present(nextView!, animated: true, completion: nil)
출처: http://geguri.tistory.com/45 [개구리의 IT공간]
출처: http://geguri.tistory.com/45 [개구리의 IT공간]
swift 로 몇분전,몇시간전등으로 표기하는 예제 (0) | 2017.05.11 |
---|---|
권한 예제 모음 (0) | 2017.04.25 |
swift 카메라 및 갤러리 접근 코드 소스 (0) | 2017.04.20 |
IOS 멋진 예제 모음 사이트 (0) | 2017.04.17 |
이미지 체인저를 이용한 소스 (0) | 2017.02.11 |
swift 로 몇분전,몇시간전등으로 표기하는 예제 (0) | 2017.05.11 |
---|---|
권한 예제 모음 (0) | 2017.04.25 |
swift 카메라 및 갤러리 접근 코드 소스 (0) | 2017.04.20 |
swift 화면 이동 (0) | 2017.04.18 |
이미지 체인저를 이용한 소스 (0) | 2017.02.11 |
스위프트 공부 가이드
Apple 공식 Swift 언어 가이드를 보시면 언어 자체를 공부하시는데 이보다 좋은 문서는 없을 듯 싶구요.
https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language
Swift를 이용한 iOS 개발 공부에 집중적으로 초점을 맞추신다면, Raywenderlich Tutorials을 추천합니다.
https://www.raywenderlich.com/category/swift
맛보기 정도로 가볍게 배워보고 싶으시면, CodeSchool의 Swift 코스를 추천합니다.
https://www.codeschool.com/courses/app-evolution-with-swift
그 외에도, 유명한 Stanford iOS Course (http://web.stanford.edu/class/cs193p), Coursera, Udacity 에도 양질의 Swift 동영상 강의가 있습니다.
xcode 인덱싱 비활성화.. (0) | 2017.08.04 |
---|---|
background thread 종류 (0) | 2017.07.14 |
array union, intersection 관련내용 (0) | 2017.06.30 |
xcode pod 파일들이 엉켰을때.. (0) | 2017.06.29 |
스위프트 추천 기술들 (0) | 2017.04.10 |
모바일 로컬 데이터베이스로 개인적으로 sqlite보단 빠르고 안정적이라고 생각한다. 그외 iOS자체적으로 제공하는 CoreData등이 있다.
MBaaS로 Parse가 없어지면서 대체할 수 있는 백엔드서비스로 각종 분석서비스등을 쉽고 저렴하게 이용할 수 있다.
Objective-C시절부터 유명했던 이미지 캐시 라이브러리로 Swift도 지원한다. 이것 외에 Swift언어로 순수하게 작성된 Haneke나 Kingfisher등을 추천한다.
Swift언어에서 HTTP프레임웍으로 가장 많이 사용하는 라이브러리로 서버와의 통신에 중요하게 사용된다.
Swift언어기반으로 만들어진 JSON데이터 파싱 라이브러리로 가장 많이 이용한다고 생각된다. 여기에 보통 JSON매핑이 필요한 경우 ObjectMapper를 사용한다.
함수형 프로그래밍(Reactive Programming)에 사용하는 Swift용 라이브러리 중 하나로 무엇보다 소스코드를 상당히 간결하게 작성할 수 있는 장점이 있다.
깔끔한 로그인 화면등에 사용할 수 있는 UI를 사용할 수 있다.
플랫한 UI 라이브로리로 경고창이나 버튼, 입력박스등을 참고할 수 있다.
다양한 앱에 메시지받는 기능이나 채팅기능을 구현하고 싶을 때 유용하며 Firebase와도 궁합이 잘 맞는다.
다른 로딩 라이브러리도 많지만 색상이나 상세정보를 깔끔하고 쉽게 변경할 수 있어 추천한다. 보통은 SVProgressHUD, MBPrograssHUD를 많이 사용한다.
Swift언어로 작성된 일반적인 슬라이드 메뉴를 구현할 때 자주 사용하는 라이브러리중 하나이다.
입체적인 슬라이드메뉴를 구성해야할 경우 사용할 수 있는 라이브러리로 유튜브에 올라온 영상을 참고하자.
구글 서비스를 사용하다보면 나오던 원형 아이콘에 이니셜이 들어가는 형태의 이미지를 구현하고 싶을 때 이용할 수 있는 라이브러리이다.
키보드를 눌렀을 때 애니메이션 처리에 유용한 라이브러리인데 최근 업데이트가 되지 않고 있다.
UIColor에 16진수 색상을 쉽게 사용하고 싶은 경우에 이용할 수 있는 라이브러리이다.
개인정보 입력화면 양식등에 다음 텍스트필드로 입력할 수 있도록 이동이 가능하게 만들어주는 라이브러리이다.
카운팅 애니메이션이 필요할 경우 이용할 수 있다.
TabBar를 사용하는 UI를 구성시 깔끔한 애니메이션을 적용하고 싶은 경우에 이용할 수 있는 라이브러리이다.
스크롤바가 방해되지 않는 형태의 네비게이션을 구현할 때 유용하다.
코드 작성이 적고 깔끔하고 쉽게 애니메이션을 구현할 수 있는 라이브러리이다.
사진을 나열한후 줌 액션을 통해 이동애니메이션등을 깔끔하게 처리할 수 있는 라이브러리이다.
TouchID사용할 경우 이용할 수 있는 라이브러리이다.
위치정보를 처리할 때 이용하는 라이브러리이다.
화면UI의 크기를 확인할 수 있는 라이브러리이다.
xcode 인덱싱 비활성화.. (0) | 2017.08.04 |
---|---|
background thread 종류 (0) | 2017.07.14 |
array union, intersection 관련내용 (0) | 2017.06.30 |
xcode pod 파일들이 엉켰을때.. (0) | 2017.06.29 |
스위프트 공부 참고 사이트 (0) | 2017.04.10 |
class ViewController: UIViewController {
@IBOutlet weak var imgMain: UIImageView!
@IBOutlet weak var btnPrev: UIButton!
@IBOutlet weak var btnNext: UIButton!
var idx = 0
var array_img = ["img1.jpeg" , "img2.jpeg" , "img3.jpeg"]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
initView(_pos : 0);
}
func initView(_pos : Int){
print( "current pos -> \(_pos)" )
imgMain.image = UIImage(named: array_img[_pos]);
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func showPrevPrc(_ sender: Any) {
idx -= 1
if ( idx < 0 ){
idx = array_img.count - 1
}
initView(_pos: idx);
}
@IBAction func showNextPrc(_ sender: Any) {
idx += 1
if(idx >= array_img.count){
idx = 0;
}
initView(_pos: idx);
}
}
swift 로 몇분전,몇시간전등으로 표기하는 예제 (0) | 2017.05.11 |
---|---|
권한 예제 모음 (0) | 2017.04.25 |
swift 카메라 및 갤러리 접근 코드 소스 (0) | 2017.04.20 |
swift 화면 이동 (0) | 2017.04.18 |
IOS 멋진 예제 모음 사이트 (0) | 2017.04.17 |