본문 바로가기

개발53

iOS 앱에서 다크모드 비활성화 UIUserInterfaceStyle 두가지 방법이 있다. 아래처럼 info.plist 에 UIUserInterfaceStyle을 Light(혹은 Dark)로 추가하면 되는데 UIUserInterfaceStyle Light xcode에서 추가하려고 하면 UIUserInterfaceStyle이 없다. Appearance로 입력해야 한다. xml에서 UIUserInterfaceStyle로 입력해도 xcode에선 Appearance로 나오니 당황하지 말자. 다른 방법은 필요에 따라 window, viewController, view 에서 각각 ovverrideUserInterfaceStyle을 .light로 설정하면 된다. 그런데 다크모드를 강제하는데 화면별로 따로 할 일이 뭐가 있을까, info.plist에.. 2021. 2. 27.
파일 확장자로 mimetype 추측하기 기본 모듈인 mimetypes로 쉽게 할 수 있다. >>> import mimetypes >>> mimetypes.guess_type('image.png') ('image/png', None) >>> mimetypes.guess_extension('image/jpeg') '.jpg' >>> mimetypes.guess_type('image.tar.gz') ('application/x-tar', 'gzip') 반대로 mimetype으로도 파일 확장자를 추측할 수 있다. >>> mimetypes.guess_extension('image/jpeg') '.jpg' 끝. 2021. 2. 22.
코틀린에서 const val 과 val 차이 자바에서 상수를 선언할 아래와 같이 사용한다 class PageLoader { public static final int PAGE_SIZE = 20; } 코틀린에서는 보통 companion object에서 상수를 선언해 사용하는데, val만 사용해도 변경이 안되기 때문에 아래처럼 사용하기도 한다. class PageLoader { companion object { val PAGE_SIZE = 20 } } 코틀린만 보면 별 차이가 없는데, 코틀린에서 선언된 PAGE_SIZE를 자바에서 사용하려면 함수가 되어 있는 것을 볼 수 있다. PageLoader.Companion.getPAGE_SIZE(); 맨 위의 자바 코드에서 처럼 만들려면 const를 붙여줘야 한다. class PageLoader { compa.. 2021. 2. 21.
앱 설치/업데이트 시간 가져오기 PackageInfo packageInfo = App.get().getPackageManager().getPackageInfo(BuildConfig.APPLICATION_ID, 0); // packageInfo.firstInstallTime // packageInfo.lastUpdateTime 2021. 2. 3.