반응형

IOS에서 Date의 시간을 찍어보면 

print(Date())

결과 : 2021-08-05 00:57:38 +0000

 

위 같이 결과가 나온다. 

지금이 오전 9시 인데..

 

알아보니.. date()가 UTC 00:00 기준이기 때문이란다. 

실제 폰timezone 기준으로 출력되니 문제는 없다. 

 

 

우리나라는 UTC+09:00 이다. 

 

 

반응형
반응형

가끔씩말야... Cell을 만들고 그 안에 하위 subView들의 액션을 처리할때가있다.

안드로이드 경우는 각 뷰들의 이벤트를 처리하는데 뭐 문제가 없었어... 

 

근데 IOS는 참 신기하단말야...여튼... 나의 문제는 Cell을 하위 아이템들을 등록을하고 

버튼 클릭 이벤트를 각 뷰에 줄려고하는데 

상위 TableView의 didSelectRowAt이벤트만 발생이 되는거다...

참 또 왜이러니... ㅡ.ㅡ... 순탄하게 간적이없다.. 

 

 여튼 시원하게 깨닫지는 못했는데 이유는 알아냈으니... 글을 작성해본다. 

 

Cell 의 저 전화번호를 클릭하면 전화가 걸리게 작업을 하고싶었음.

위의 번호를 누르면 전화걸리게하고싶은데 didSelectRowAt 만 호출이되고 View의

UITapGestureRecognizer는 호출이 안됨 . 

 

Xcode hierarchy 를 확인해보니 아래와같이.......  ㄷ ㄷ 

리스트계층이 위로 올라와있음. 

그래서 Cell코드를 봤지.

계층 등록

self.addSubView를 했는데... 어디다가 add한거지..?

self = contentView가 아닌가..?

false 라고 뜸.

같은 객체가 아니라네  ㅡ.ㅡ ....

그래서 contentView에 Add를 해줌. 
contentview에 올라왔음

그랬더니 아까 계층구조와 다르게 ContentView에 올라왔음. 

self.가 아니라 contentView에 올려야 한다 ..이말임... 여튼...... ㅅㄱ

반응형
반응형

사용 목적은 드랍박스를 만들려고했는데 IOS에서 텍스트 필드가 수정이 되고 커서가 깜빡여서 이를 수정하기 위한작업이였음. 

다른방법이 물론 있겠지만... 일단 원초적으로 ...

안드로이드는 이런식으로 스피너를 사용하여서 포커스에 대한 문제가없다. 
반면 IOS는 이런식으로 별도로 설정을 해주지않으면 UITextField 수정이 가능하며 커서도 깜빡인다. 

 

일단먼저 UITextField 수정 안되는거 막을려면 

 UITextFieldDelegate 등록 후 해당 TextField를 등록해주고 

 

mDeadDateDropBox.delegate = self

 

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

        return false

    }

 

위에 델리게이트메서드를 등록해주면됨... ( 간닪나건데 잘 나와있지 않다.. )

 

그리고 커서 깜빡이는거는 

mDeadDateDropBox.tintColor = .clear

이렇게 등록해주면 해결됨. 

반응형

'IT 이야기 > 2021_IOS' 카테고리의 다른 글

TableView Section reload  (0) 2021.08.10
IOS Date객체 관련...  (0) 2021.08.04
UITableView Cell의 하위 itemView Action  (0) 2021.06.24
UILabel 깜빡이는 애니메이션.  (0) 2021.06.21
반응형

 

func txtAnimated() {

        UIView.animate(withDuration: self.txtTime,

                               delay: 0,

                               options: [.curveLinear],

                               animations: {

                                self.mDeadLineTxt.alpha = 0.0

                               },

                               completion: { _ in

                                UIView.animate(withDuration: self.txtTime,

                                                       delay: 0,

                                                       options: [.curveLinear],

                                                       animations: {

                                                        self.mDeadLineTxt.alpha = 1

                                                       },

                                                       completion: { _ in

                                                        if self.isTimeAnimated {

                                                            self.txtAnimated()

                                                        }

                                                       })

                               })

    }

 

 

** 설명

self.txtTime 은 TimeInterval형이다 

options 의 [.curveLinear]은 일정속도로 애니메이션 효과를 준다. ( 자세한것은 찾아보시고. )

 

animations를 정의해주고 self.txtTime의 시간이 지나면 completion이 호출이되는데 

이 호출되는 부분에 애니메이션을 정의해준다. 완료시점에는 재귀호출로 종료해주면된다. 

 

self.isTimeAnimated는 Bool형 이고 생명주기에따라 재귀를 멈춘다.  

 

주의할점은 completion말고 animations 애니메이션을 중첩으로 넣어주면

일정시간에 호출이 되는것이 아니라 바로 호출되서 애니메이션이 꼬인다. 

이부분 참고해서 작업하면된다. 

반응형
반응형

음.. 일단 Crashlytics 필요한 이유는 안드로이드를 개발을 완료했어도 

다른 기기나 버전에서 오류가 날 수 있기 때문이다. 

 

그래서 Crashlytics 등록을 해놓으면 오류가나면 어떤 오류인지 볼 수 있고 이에 대응이 가능함. 

 

1. firebase 들어가서 Project를 생성하자 . 

firebase.google.com/docs/crashlytics/get-started?hl=en&platform=android

위에 들어가면 잘나와있음.

 

2. 설정을 완료하면 앱 실행시 Crashlytics 관련 오류가 날거다

3. 아래 firebase  콘솔 > 출시 및 모니터링 > Crashlytics > 사용 설정 버튼을 클릭하게 되면 

4.아래처럼 프로그레스바가 돌면서 오류를 강제로 던지라고 한다. 

5. 강제로 버튼 리스너 걸어서 throw 던져주면 캐치되면서 리포트 화면으로 넘어간다. 

6.

설정 완료되었고 디테일하게 하고싶으면 레퍼런스 잘 읽고 하면됨. 

 

반응형
반응형

API26에서는 Translucent/Floating 으로 만든 투명한 Activity들은 화면 회전고정을 하지 못하게 의도한 것입니다.

아래 commit 메세지에서 위와같은 코드를 추가한 것입니다.

https://android.googlesource.com/platform/frameworks/base/+/39791594560b2326625b663ed6796882900c220f



API 27(8.1)기기 이후부터는 windowIsTranslucent을 사용해도 오류를 발생시키지 않게 됩니다.

즉, 이 오류 메세지는 API 26(8.0) 기기에서만 발생합니다.




출처: https://gun0912.tistory.com/79 [박상권의 삽질블로그]

반응형

'IT 이야기 > 2019_Android' 카테고리의 다른 글

커스텀뷰의 고뇌  (0) 2019.03.04
반응형

Android의 커스텀뷰....... 아주 잘 이용하고있다.

코드의 양을 줄일뿐만 아니라.

필요로 의한 뷰 들을 커스텀을 할수있으니.

다만, 내가 인지하지 못한 일이 벌어졌으니...


글로벌 객체( 개인이 만든 라이브러리 ? )로 인한... 메모리 낭비?부하? 

정확히 어떻게 표현해야할지 모르겠다.


테이블 뷰로 예를들면  Cell에 Hodler를 만들어 재사용을 하는데  

커스텀뷰에 글로벌 객체를 계속 호출이 되어서 부하가 되는 현상이라고 해야하나....

여튼... 내가 리스트뷰에 애니메이션을 적용시켜놨는데

최신폰에는 문제가없는데 좀 오래된 폰( 갤럭시A6? )에는 애니메이션 자체가 먹지 않는다..


혹시내가 호출을 잘못했나 확인을 해보니... 

그런것도 아니고..

동일한 코드를 이용한 다른 앱은 오래된 폰 에는 문제가없다.


결론은 내가 호출한 객체들이 문제인것 같은 느낌이 든다...


WindowManager wm;

private DisplayMetrics dM() {
DisplayMetrics dm = new DisplayMetrics();
this.wm.getDefaultDisplay().getMetrics(dm);
return dm;
}
private int getStatusBarHeight() {
int result = 0;
int resourceId = this.a.getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
result = this.a.getResources().getDimensionPixelSize(resourceId);
}
return result;
}



위의 코드들이 불러온것의 일부..

이게 부하의 원인이란 말인가...?!


추후 더 학습을 통해... 정말 부하의 원인인지...알아보도록 하자... 

지금은 참치에 소주한잔이 더 소중하다.



반응형
반응형

10월 11일 자전거 전국일주 계획을 꿈꾸다,.


10월 14일 퇴사를 한다... 

다른 회사를 들어가기 전까직은 의미있게 여행을 다녀오고싶었다..




내 나이 30살까지 제대로된 여행도전을 해본적이 없어 .. 후회하기전에 뭐라도 하자는 식이였다..

첫생각은 버스 &기차 여행.. 무작정 걷는 여행이였다..

음 나름 정말 의미있을 것 같았는데 어떻게 생각해보면 구경하고 돌아다니고 음...음...뭔가가 빠진 느낌이였다.


계속 고민을 하다가 자전거 여행이라는 키워드에 집중을 했다 .

정말 고민이였다...이생각은 안한게 아니였는데.. 버스&기차 가 가주는 길을 내 발로 페달링을 해서 가야하니...



오늘따라 왠지 사랑스러운 나의 발...


일단 나는 맛보기를 시작했다... 자전거 전국일주 후기에대해서 미친듯이 찾아봤다..

뭐 다들 힘들었지만 보람찼다 등등... 여러가지 말이 많았다..

하지만 나는 정말 걱정이많다..........왜냐면 첫 여행인데....자전거로 전국....전국일주라니...-_-..

출발일은 10월 25일로 정하였는데 ... 

그날 엄청 추울 것같기도하고.. 이럴때는 어땠는지 ... 비슷한 시기에 간사람들 후기에는 그런말은 없었다..


일단...내 자전거가 로드인데.... MTB로 바꿀 생각이다...자전거는 되도록이면 중고로 ㅋㅋ...

로드자전거가 더 여행하기 좋다한다..이유는 속도감도 있고 등등...근데 더 찾아보니깐

짐을 적을때 기준이란다...짐이 적긴 힘들지....전국일주인데... 음 엄청 전국은 아닐수도있는데..그래도.....


뭐 헬멧도 사야하고... 옷도 사야하고 ... 기타장비..사야할게 너무많다...

그래도 너무 가슴이 뛴다...빨리하고싶다...


 첫 마음가짐으로 블로거에 적는다 ..정말 갈 생각으로.. 

다음준비를 진행하자...자전거를......구매를 해야지............. 쿨럭쿨럭...









반응형

+ Recent posts