UITabBarController를 사용하는데 특정 조건에서 특정 탭이 클릭은 되지만, 페이지가 넘어가지 않고 다른 액션을 실행하고 싶을때가 있다. 이때는 UITabBarControllerDelegate 의 func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool 를 이용해 제어가 가능하다. 먼저 MainTabBarController 클래스를 생성하고 아래와 같이 코드를 작성한다. MainTabBarController.swift import Foundation import UIKit class MainTabBarController: UITabBarCont..
예를 들어 디버그와 릴리즈시 코드상에 분기를 태워 각각 다른 값을 사용할수도 있고, 다른 방법으로 Build.gradle(app) 에서 사용하는 방법도 있다. gradle 에 값을 추가하고 가져오는 방법에는 두가지 정도가 있는데, 한가지는 BuildConfig 에서 가져오는 방법과 res 에서 가져오는 방법이 있다. 선언 방식 android { ... buildTypes { release { // These values are defined only for the release build, which // is typically used for full builds and continuous builds. buildConfigField("String", "BUILD_TIME_01", "\"릴리즈 맞춤형 ..
Android 에서 리시버에 android:process=":remote" 를 추가 하면 별도의 프로세스에서 실행을 하게되는데, onReceive()를 동작 시키면서도 어플리케이션의 메인쓰레드를 멈추지 않게 된다. 따라서 어플리케이션은 종료 해야하는데 서비스는 계속 동작하고 싶게 만들고 싶을때 사용하면 된다. 하지만 문제는 리소스의 사용량 증가와, Singleton 및 static 변수를 별도의 프로세스에서는 접근이 불가능 하게 된다. ex) SharedPreferences 도 공유 사용이 불가능 하다. 게다가 android:process=":remote" 와 동일한 기능 구현은 다른 방법으로도 가능하므로 특별한 경우가 아니면 신중하게 사용해야 한다.
Android suppport Library 28 로 업데이트후에 FloatingActionButton 안의 이미지가 Center를 벗어나서 그려지는 현상이 보였다. 찾아보니 버그라는데, 이것 저것 해보니 해결 방법은 두가지가 있다. 1. FloatingActionButton xml을 layout_width layout_height 56dp 로 설정 (이부분 변경이 필요할시 2번 방법을 쓰면 작동이 되었다.) 2. code 추가 fab.scaleType = ImageView.ScaleType.CENTER
BottomNavigationView 를 사용할때 버튼이 4개 이상 늘어나면 버튼의 이름 들이 선택 할 때만 보이게 된다. 이럴때는 아래의 옵션 xml 에서 BottomNavigationView 에 아래의 옵션을 추가 하여 BottomNavigationView의 이름 보기 방식을 변경할수 있다. app:labelVisibilityMode="labeled" 총 4개의 옵션이 있는데, 하나씩 설명해 보면 1. auto 3 개 이하의 항목이있는 경우 레이블은 "레이블"으로 동작하거나 4 개 이상의 항목이 있으면 "선택된"레이블로 동작합니다. 즉 3개 이하의 메뉴일때는 이름이 그대로 보이고, 그 이상 일때는 선택된 버튼만 이름이 보인다. 2. labeled 모든 항목의 이름이 전부 노출된다. 3. unlabel..
Mac에서 Android ADB Path 설정은 아래와 같다. 1. 먼저 ADB 위치를 찾아보자 보통 특별히 사용자가 위치를 다른 경로에 설치하지 않을 경우 ADB 위치는 아래와 같다 /Users/{사용자}/Library/Android/sdk/platform-tools/ {사용자} 이부분은 자신의 계정명이다. 해당 디렉토리가 실제 존재하는지를 알고 싶다면, Finder (파인더) 를 열고 cmd + shift + G 를 눌러서 아래와 같이 Path를 입력하고 이동을 누르자 {사용자} 부분은 자신의 계정 디렉터리를 참고해서 넣어주자 ex) 자신의 계정 디렉토리가 test 라면 경로는 /Users/test/Library/Android/sdk/platform-tools/ 가 된다. 2. 해당 폴더로 이동이 되..
요 근래 매우 다양한 일들이 생겨서 심난하여 글을 잘 올리지 못했다. 그러던 중 저번 주에 독특한 요청이 들어왔는데, 안드로이드 디바이스의 host를 변경해서 테스트를 해달라는 요청이었다. 찾아보니 일단 실제 기기에서는 루팅 하지 않는 이상 안되는 듯하고, 에뮬레이터에서 하는 방법을 찾아보았다. 일단 몇몇 버전을 다운로드하여서 테스트해보았는데, 벽돌폰이 된 버전도 생겨낫다.... 실제 기기에서 했으면 아찔했을 거 같다. 자 이제 본론으로 넘어가서 방법을 알아보자! 1. AVD Manager를 열자 아래 그림 1처럼 디바이스 목록 버튼을 클릭하면 Open AVD Manager를 발견할 수 있다. 클릭! 2. 왼쪽 하단에 + Create Virtual Device... 을 눌러보자 3. 그림 2 에서 pla..
가끔 XCode가 문제인지 무슨 문제인지 멀쩡하던 프로젝트가 팟 파일 에러를 뿜을 때가 있다. 그럴 때에는 여러 시도를 해볼 수 있는데 그중 하나가 팟을 초기화후 다시 설치하는 것이다. 방법은 아주 간단하다. 1. 터미널을 켠다. 2. 프로젝트 메인 폴더로 이동한다. 3, 아래 명령어를 입력한다. sudo rm Podfile.lock sudo rm -r [ProjectName].xcworkspace sudo rm -r Pods pod install [ProjectName]
이상하게 언젠가부터 Fabric에 dSYM File을 첨부하려고 하면 검은색 화면 밖에 나타나지 않는다 상당히 오래 되었는데도 고쳐지지 않고 있다. 일단 처음부터 시작하자 . 그림2에 ! 표시가 된 부분을 클릭해 주자 그럼 그림 2와 같이 화면이 표시된다. 아마 한참을 기다려도 정상적인 화면이 표시되지 않을 수 있다. 이럴 때는 새로고침을 해도 되고, 그것도 안될때가 있다면 mac 같은 경우는 cmd + + 버튼 또는 - 버튼으로 화면 배율을 변경하면 되고 window 같은 경우는 ctrl + + 또는 - 버튼을 눌러 화면 배율을 변경하면 된다. dSYM 파일을 가져오는 방법은 아래 링크 참고 https://sweetcoding.tistory.com/94
App Store Connect Operation Error ERROR ITMS-90534: "Invalid Toolchain. Your app was built with an unsupported version of Xcode or SDK. If you plan to submit this build to the App Store, make sure you are using the GM version of Xcode 10.1 and the SDK for iOS 12.1 and watchOS 5.1, Xcode 7.1 and the SDK for tvOS 9, or Xcode 6 and the SDK for macOS 10.9 or later. If you are using an Xcode beta ver..