* 한화면에서만 가로 모드 지원 하기

 

플레이어 등 한 화면만 가로모드로 지원했다가 다른 화면은 세로로 고정 되도록 해야 할 때가 있다.

먼저 AppDelegate.swift에 다음 코드를 추가한다. 다른 화면들은 세로로 고정 할려고 Lock은 portrait로 고정 시켜놓았다.

var orientationLock = UIInterfaceOrientationMask.portrait

    func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {

        return self.orientationLock

    }

    

    struct AppUtility {

        static func lockOrientation(_ orientation: UIInterfaceOrientationMask) {

            if let delegate = UIApplication.shared.delegate as? AppDelegate {

                delegate.orientationLock = orientation

            }

        }

        

        static func lockOrientation(_ orientation: UIInterfaceOrientationMask, andRotateTo rotateOrientation:UIInterfaceOrientation) {

            self.lockOrientation(orientation)

            UIDevice.current.setValue(rotateOrientation.rawValue, forKey: "orientation")

        }

    }

    

 

그리고 전환하는 화면 맨위에 Delegate를 선언해 준다

    let appDelegate = UIApplication.shared.delegate as! AppDelegate

 

그리고 ViewWillAppear안에 다음과 같이 방향을 정해준다

AppDelegate.AppUtility.lockOrientation(UIInterfaceOrientationMask.landscapeRight, andRotateTo: UIInterfaceOrientation.landscapeRight)

 

그리고 돌아오는 화면에는 다시 Lock을 세로로 고정 해줘야 하기 때문에 다음과 같이 선언해줬다.

    let appDelegate = UIApplication.shared.delegate as! AppDelegate

AppDelegate.AppUtility.lockOrientation(UIInterfaceOrientationMask.portrait, andRotateTo: UIInterfaceOrientation.portrait)

 

까먹고기 방지피드 !!!

'# 개발자노트 > IOS' 카테고리의 다른 글

[swift] NotificationCenter 사용하기  (0) 2017.09.12
[Xcode8] storyboard에서 unwind 추가하기  (0) 2017.06.29

* SDK 관리법


나의 기억력을 못믿어 써 놓는 포스팅이다.

Eclipse 에서 Android Studio로 나도 결국 넘어 갔다.

작년 부터는 Eclipse에서 지원하지 않는 부분도 많아져서 이제는 교체 시기가 왔다고 생각 하고 작년 여름부터 나도 

Android Strudio를 사용하고 있다.

하지만 옛날에 했던 프로젝트가 계속 유지보수 요청이 들어온다...................

usb serial 통신으로 Android Studio로 전환이 되지 않아 이 프로젝트만 계속 Eclipse를 사용하는데

문제는 sdk이다.

두 툴에서 SDK를 같이 쓰려니 안드로이드 스튜디오 갔다가 이클립스 키면 계속 최신 버전 dx.jar 가 없다고 뜨고

SDK Manager 실행도 되지 않는다.

열심히 고쳐서 또 사용하다 안드로이 스튜디오 다녀오면 같은 증상이 반복되고 

머리가 좋지 않는 나는 까먹을 것 같아 기억을 하기위해 ....


먼저

1단계



이 파일을 구글링하여 찾아 다운로드 한다.

그리고 실행!!!!

설치시 경로는 현재 sdk가 존재하는 곳에다가 설치를 해준다.



이렇게 하고 Eclipse에서 

Window -> SDK Manager를 실행하면  




짜란

마구 안된다고 뜨는 버전 해당되는거 설치한다.


이래도 안되면!!!

2단계

sdk폴더에 안된다고 뜨는 버전을 몽땅 삭제해 버린다.

몽땅몽땅


이러면 이클립스사용할때 잠시나마 사용가능하다.

안드로이드 스튜디오 가서 뭐가 또 안맞는다고 업데이트를 시켜주라고 하면 적용해주고 다시 이클립스 키면 또 안된다.

그러면 위의 과정을 또반복한다.








'# 개발자노트 > Android' 카테고리의 다른 글

Fragment LifeCycle  (0) 2023.05.10
액티비티 LifeCycle  (0) 2023.05.09
안드로이드 4대 컴포넌트  (0) 2023.05.09
EditText Focus 키보드 문제  (0) 2017.05.17

*  NotificationCenter 사용하기

  


IOS 에서 Background로 받은 데이터를 처리할 때 주로 NotificationCenter를 사용한다


등록 할 때는 


 NotificationCenter.default.addObserver(self, selector: #selector(self.AAA()), name: NSNotification.Name(rawValue: "BBB"), object: nil)


이런식으로 사용한다.


위에서  AAA()는 다른 곳에서 post했을 시 해당 함수로 이동할 수 있도록 등록하는것이고 , BBB는 다른 곳에서 post 할 때 값으로 이름을 서로 정해논 것이다.

한마디로 정리하면 다른곳에서 이 AAA()  함수를 실행 시키기 위해서 "BBB"를 value로 설정하여 알림을 보내주면 등록되어 있는 Notification중에 "BBB"를 찾아 AAA() 함수를 실행 시켜줄 수 있는것이다.


다른 곳에서 이 것을 호출 할 시에는


NotificationCenter.default.post(name: Notification.Name(rawValue: "BBB"), object: self) 

  

이런 식으로 사용한다.



또한 해제 할 시에는


NotificationCenter.default.removeObserver(self, name: NSNotification.Name(rawValue: "BBB"), object: nil) 


이런 식으로 사용한다.



보통 페이지를 시작할 때 등록해주고 페이지를 닫아 줄 때는 해지 시켜 주면서 사용한다.


* StoryBoard Unwind추가


IOS 앱을 개발하다 보면 Back 키가 존재하지 않기 때문에 Back 버튼을 화면에 만들어 이전 화면으로 돌아가야하는 경우가 있다.

이러한 경우 Unwind라는 함수를 사용하면 문제없이 현재화면을 종료하고 원하는 화면으로 이동할 수 있다.



위와 같이 화면에서 첫번째 화면에서 두번째 화면, 세번째 화면으로 이동한 후 뒤로 갈때 현재 화면을 종료하고 원하는 화면을 만들기 위해 예제를 만들어 테스트 해보았다.


 - FirstPage 

  : [Go next Page]를 클릭하면 Second Page로 이동

 - SecondPage

  : [Go next Page]를 클릭하면 Third page로 이동

  : [Go First]를 클릭하면 SecondPage화면이 종료되고 FirstPage로 이동

 - ThirdPage

  : [Go First]를 클릭하면 ThirdPage화면이 종료되고 FirstPage로 이동

  : [Go First]를 클릭하면 ThirdPage화면이 종료되고 SecondPage로 이동


제일 먼저 첫번째 화면과 두번째 화면에 다음과 같이 코드를 추가


<<FirstPage와 연결된 Swift파일>>


<<FirstPage와 연결된 Swift파일>>




그리고 [Go FirstPage]를 끌어 Exit에 가져다 놓으면



작성해놓은 함두 두개가 뜬다



나는 첫번째 페이지로 돌아갈것이기 때문에 첫번재 페이지 Swift파일에 작성한 함수를 선택하면 끝!






 




EditText Focus KeyBoard 문제



**이 포스팅은 개발 시 기억 안날 때 찾아보기 위하여 간단하게 정리한 포스팅 입니다.



(1) 화면 실행시 키보드가 자동으로 올라 올 때


Android에서 UI를 구성할 때 EditText를 사용할때마다 Focus가 자동으로 설정되어 

화면 Create 될때마다 무조건 키보드가 올라오는 경우에 적용하면 간단하게 해결 할 수 있다.


EditText의 포커스를 해제하면 된다.

해제하는 방법은 해당 화면에서 가장 밖에 있는 Linear Layout에 두줄만 추가 해 주면 된다.


android:focusable="true"
android:focusableInTouchMode="true"


(2) 가로 화면으로 진행시 화면 전체화면으로 키보드가 보여질 때


Android에서 UI를 구성할 때 EditText를 사용시 화면이 가로로 되면 화면 전체가 EditText창으로 보여 기존 화면이 모두 가려지는 현상이 생긴다.

그때는 아래와 같이 EditText속성에 한줄만 추가해 주면 해결 된다.


android:imeOptions="flagNoExtractUi"



(3) Edit Text Input Type


마지막으로 EditText 사용시 키보드 Input타입 정리


 Contstant

 Value

 Description

 date

14 

 날짜 입력

 datetime

 날짜와 시간 입력

 number

 번호

 numberDecimal

2002 

 숫자와 점

 numberPassword

 12

 암호필드

 numberSigned

1002 

 Signed Number 

 

 

 

 

 

 

 

 

 


출처: [안드로이드 개발자 사이트] https://developer.android.com/reference/android/widget/TextView.html#attr_android:inputType







'# 개발자노트 > Android' 카테고리의 다른 글

Fragment LifeCycle  (0) 2023.05.10
액티비티 LifeCycle  (0) 2023.05.09
안드로이드 4대 컴포넌트  (0) 2023.05.09
[Android]SDK Manager Ecilpse 에서 열리지 않을때  (0) 2017.11.22

DataTable (표, 리스트)


*참고 : https://www.datatables.net/examples/ajax/objects.html



(0) JQuery 부분


<!-- DataTables CSS -->

    <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.13/css/dataTables.bootstrap.min.css">

    <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/fixedcolumns/3.2.2/css/fixedColumns.bootstrap.min.css">



먼저 링크를 추가 한다.


(1) Script 부분


$(document).ready(function(){

   

    sTable = $('#searchDataTable').DataTable({

    scrollY:        false,

            scrollX:        true,

            

            scrollCollapse: true,

            paging:         true,

            

            

            columnDefs: [

                         { width: '10%', targets: 0 },

                     ],

  

            columns : [{"data":"maktg_DTM"},

                            {"data":"maktg_SHOP_NM"},

                            {"data":"maktg_STAFF_NM"},

                            {"data":"ctp_KOR_NM"},

                            {"data":"sig_KOR_NM"}]

            

        });

}



그리고 다음과 같이 선언을 해준다


(2) HTML


<table class="table table-striped table-bordered dt-responsive nowrap" id="searchDataTable" cellspacing="0" width="100%">
<thead>    
<tr>
<th >방문일시</th>
<th >업체명</th>
<th >담당자</th>
<th >시도명</th>
<th >시군구명</th>
</tr>
</thead>
</table>



위와 같이 헤더만 선언해주면 위의 JQuery 부분에서 값을 뿌려준다.


SVN 사용법 정리


* 이클립스 기준 입니다.


(0) Repository 등록 


이클립스 메뉴에서 [Window] - [Show View] - [Others] -[SVN Repositories]를 하여 SVN 창이 보이도록 한다




그러면 위와 같이 SVN Repository Exploring이 나타나고 여기에서 SVN을 추가 할 수 있다.


그리고 [SVN Repository Exploring]을 선택한다.


그러면 왼쪽에 이런 창이 생기고 추가하기위해 위에 플러스 버튼을 클릭 한다.


그러면 다음과 같은 Repository Location등록하는게 생긴다




이곳을 잘 작성해 주면 된다.


(1) CheckOut


CheckOut은 현재 공유된 소스를 내려 받는 것이다.

아래 있는 Trunk를 우클릭 하여 Check Out 누르면 소스가 다운로드 된다.


(2) Update


Update는나 이외의 사람이 수정해논 소스를 내려 받는 것이다.

Conflict가 날 수 있기 때문에 내소스를 고치기 전에 하번 Update해주고 시작하는것이 좋다.


(3) Commit


Commit은 내가 여태까지 수정한 소스를 SVN에 올리는 것이다. 








+ Recent posts