[Swift5] 버튼에 라운드 주기 (버튼 둥글게)


개발을 하다보면 버튼에 간단한 디자인을 입혀야하는 경우가 있습니다.

 

그중 버튼의 꼭짓점부분을 둥글게 해달라는 (라운드처리) 이야기가 간혹 있는데, 이럴때 사용하는 방법입니다.

 

기본 버튼에 라운드를 주는 방법은 쉽습니다.

UIButton.layer.cornerRadius = 8

 

일반적으로 생성한 버튼의 모습

 

아래는 소스입니다.

@IBOutlet weak var btn_info: UIButton!

override func viewDidLoad() {
	super.viewDidLoad()

	//버튼의 라운드 처리
	btn_info.layer.cornerRadius = 8

}

 

UIButton은 UIControl을 상속받으며, UIControl은 UIView를 상속받고 있습니다. (https://developer.apple.com/documentation/uikit/uibutton)

 

Apple Developer Documentation

 

developer.apple.com

특히 상속을 받는 UIView에는 멤버변수로 layer:CALayer를 가지고 있습니다. (https://developer.apple.com/documentation/uikit/uiview)

 

Apple Developer Documentation

 

developer.apple.com

이 layer변수에는 뷰에 그림을 그려줄때 필요한 핵심 애니메이션 정보를 가지고 있는데, 이 layer의 정보를 수정해줌으로 라운드 처리가 가능해지는겁니다.

 

소스를 통해 라운드가 적용된 버튼의 모습

 

위에서 설명한 layer변수를 이용하면 버튼의 색상, 타입지정, 이미지 등록 등 다양한 컨트롤이 가능한데, 이는 본 게시글의 제목의 성격이 달라지므로 다음에 설명하는 시간을 갖도록 하겠습니다.

 

 

버전정보 (v1.0)

 - v1.0 2020.07.02 배포

 

* 저작권에 위반될 수 있는 컨텐츠(이미지, 동영상 등)나 게시글은 삭제되거나 수정될 수 있습니다.

* 문제의 여지가 될 수 있는 컨텐츠의 경우 댓글 달아 주시면 빠른 시일 내에 조치하도록 하겠습니다.

* Karzin은 항상 공부중입니다. 설명이 틀리거나 잘못된 부분이 있다면 의견내주시는대로 수정하도록 하겠습니다.

 

Karzin

abbeea@naver.com


[Swift5] 화면 전환하기

(storyboard와 show함수 사용)


Android에서 화면전환을 할때에는 Intent를 생성하여 startActivityForResult 함수를 사용하여 다른 액티비티로 전환을 했습니다. (Manifest도 적용을 해줘야 에러가 안난다는건 잊지말아야 하구요!)

 

하지만 iOS에서는 화면전환시 어떠한형식으로 전환을 하면 좋을까요?

사실 화면전환 방법은 다양한 방법이 있지만, 오늘은 storyboard에 id를 입력해주고, controller클래스에서 show 함수를 사용하여 화면을 전환하는 형식을 배워보도록 하겠습니다.

사실 storyboard의 경우 저는 Android의 xml에 대응한다고 생각을 하고 있습니다. (조금 다른면이 많이 있지만)

때문에 Android에서의 Intent 형식과 비슷한 형식을 취하는 방법을 알려드릴까 합니다.

 

요약해서 보기

프로젝트를 생성하시고,

Main.storyboard에서 기본생성된 ViewController에는 버튼을 생성하고(다음화면으로 이동할 이벤트 발생용),

이동할 ViewController를 추가로 생성합니다.

이동할 ViewController를 선택하시고 Identity의 Storyboard ID input 상자를 입력해줍니다.

입력된 Storyboard Id를 잘 기억하고 계시고,

초기 생성된 ViewController의 class로 이동합니다.

class에서 Button의 멤버생성 및 action이벤트를 생성합니다.

생성된 action이벤트에 아래와 같은 코드를 생성합니다.

//생성된 Main.storyboard와 연동작업 (변수에 담는 작업)
let myStoryBoard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
//aController에 이동할 storyBoard의 ID를 지정합니다. (다음화면의 ID)
let aController = myStoryBoard.instantiateViewController(widthIdentifier: "여기에 기억하고 계신 StoryBoard ID를 입력")
//show함수에 생성한 aController 변수를 매개변수로 넘겨줌으로써 클릭이벤트가 발생하면 이동할 storyBaord ID와 매칭되어 화면이 전환됩니다.
self.show(aController, sender: self)

 

따라해보기

0. 프로젝트를 생성하시고,

1. Main.storyboard로 이동하여 기본 생성된 ViewController와 별개로 두개의 ViewController를 생성하겠습니다.

  -> 기호에 따라 저처럼 NavigationController를 붙이셔도 됩니다!

ViewController를 추가합니다.

 

2. View를 이동하기 위한 이벤트를 걸어줄 Button을 생성합니다.

Button을 생성하고 Title를 지정합니다. (저의 경우 A Controller, B Controller라고 지었습니다.)

 

 2.1. Button에 Title을 지정하는 방법입니다.

버튼을 더블클릭해도 쉽게 변경이 가능합니다.

 - 생성된 버튼 클릭

 - 우측 상단의 Show the Attributes inspector 아이콘을 선택합니다. (선택되어있는지 확인)

 - 하단의 Title input 상자에 버튼에 보여질 Title을 입력하시면 됩니다.

 

3. 알아보기 쉽게 생성된 Controller에 각각 Label을 추가합니다.

저의 경우 A와 B로 입력했습니다. (Label의 추가 및 Title변경도 위 Button 추가하시는것처럼 진행하시면 됩니다.)

4. A를 입력한 Controller를 선택하시고,

    우측 상단의 Show the Identity Inspector 아이콘을 클릭하신 후,

    Storyboard ID input 상자를 입력해줍니다. (입력한 Storyboard ID는 잘 기억해둡니다.)

왼쪽 상자부터 클릭해가면서 차근히 따라해봅니다.

 

5. B를 입력한 Controller도 4번과 동일하게 만들어줍니다.

   단, Storyboard ID는 고유해야하므로 B는 BController등의 형식으로 입력해줍니다.

Label에 B를 입력한 Controller도 A와 동일한 작업을 해줍니다. (Storyboard ID는 다르게)

 

 -> 여기까지 Storyboard ID를 지정해 줌으로써 Android에서 xml의 android:id="@+id/~~~"와 동일한 작업을 했다고 생각하시면 되겠습니다.

 

6. 기본 생성되었던 View에 연결된 ViewController class를 storyboard와 함께 보이게 합니다.

   - 함께 보이는 방법은 우측 상단의 Add Editor on Right 버튼을 찾아 클릭하신 후, 하나는 class를 선택하시고, 하나는 storyboard를 선택하시면 됩니다.

Add Editor on Right 버튼은 이미지에 표시된 상자입니다.

7. 버튼을 우클릭한 상태로 클래스로 드래그하여 변수로 연결시켜줍니다.

여기서는 편리상 btn_a, btn_b로 생성하였습니다.

8. 7번처럼 동일한 방식으로 Action(onClick) 이벤트 함수도 생성시켜줍니다.

여기서도 편리상 onClick_a, onClick_b로 생성하였습니다.

 

9. 아래와 같이 myStoryBoard 변수의 추가와, onClick 이벤트 내 코드를 추가합니다.

여기까지 따라오셨다면 끝!

10. 실행을 해보시면 A와 B button을 누름에 따라 다른 화면(A, B)이 나옴을 확인할 수 있습니다.

 

기본 Main View
A Controller 버튼을 클릭했을때 나오는 A View

 

B Controller 버튼을 클릭했을때 나오는 B View

 

완성된 코드

class ViewController: UIViewController {


    @IBOutlet weak var btn_a: UIButton!
    @IBOutlet weak var btn_b: UIButton!
    
    //추가
    let myStoryBoard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }
    
    
    @IBAction func onClick_a(_ sender: Any) {
        //추가
        let aController = myStoryBoard.instantiateViewController(withIdentifier: "AController")
        
        self.show(aController, sender: self)
    }
    
    @IBAction func onClick_b(_ sender: Any) {
        //추가
        let bController = myStoryBoard.instantiateViewController(withIdentifier: "BController")
        
        self.show(bController, sender: self)
    }
    
}

 

금방 정리할 줄 알았더니 시간이 좀 걸려버렸네요.ㅠㅠㅠ

 

테스트 장비 : 맥미니(2020)

 

버전정보 (v1.0)

 - v1.0 2020.07.02 배포

 

* 저작권에 위반될 수 있는 컨텐츠(이미지, 동영상 등)나 게시글은 삭제되거나 수정될 수 있습니다.

* 문제의 여지가 될 수 있는 컨텐츠의 경우 댓글 달아 주시면 빠른 시일 내에 조치하도록 하겠습니다.

* Karzin은 항상 공부중입니다. 설명이 틀리거나 잘못된 부분이 있다면 의견내주시는대로 수정하도록 하겠습니다.

 

Karzin

abbeea@naver.com


[Swift5] 버튼 보이게 / 보이지 않게 하기

(Android와 비교)


iOS 앱 개발을 하다보면 버튼을 보이게 하거나 보이지 않게 해야하는 경우가 있습니다.

이런 경우 코드로는 어떻게 표현을 해야하는지를 알아보겠습니다.

 

우선 안드로이드에서 사용하는 버튼을 보이거나 보이지 않게하는 방법입니다. (setVisibility함수 사용)

 

Android에서 사용하는 방법(Java)

private Button btn_test

//init
btn_test = findViewById(R.id.btn_test);

//버튼을 보이지 않게
btn_test.setVisibility(View.INVISIBLE);

//버튼을 보이게
btn_test.setVisibility(View.VISIBLE);

 

iOS에서는 @IBOutlet으로 Storyboard에서 간단하게 드래그로 변수 선언을 해주시고, layer의 isHidden을 이용해 컨트롤합니다.

 

iOS에서 사용하는 방법입니다.(Swift5)

@IBOutlet weak var btn_test: UIButton!

//버튼 보이지 않게
btn_test.layer.isHidden = true

//버튼 보이게
btn_test.layer.isHidden = false

 

단, 위 코드는 UIBarButtonItem 컴포넌트에서는 먹히지 않습니다. (layer가 선언이 되는 컴포넌트는 전부 가능 - Button, View 등)

 

컴포넌트가 UIBarButtonItem인 경우(Swift5)

@IBOutlet weak var navigation_btn_test: UIBarButtonItem!

//버튼 보이지 않게
navigation_btn_test.isEnabled = false
navigation_btn_test.tintColor = UIColor.clear

//버튼 보이게
navigation_btn_test.isEnabled = true
navigation_btn_test.tintColor = UIColor.black

 

UIBarButtonItem 컴포넌트의 경우 아무래도 isHidden을 사용할 수 없는 모양입니다.

(객체 내에서 Hidden을 시킬 수 있는 함수나 멤버가 없는 모양)

따라서 위의 소스는

1. 버튼을 사용하지 못하게 막음.

2. 색상을 없애버려 없는 버튼처럼 만들어 줌.

두가지를 이용했다고 보시면 됩니다.

 

단, 이는 제가 아직 부족한 부분이 많아서 다른 좋은 방법이 있을 수 있으므로, 좋은 방법이 있다면 업데이트 해두도록 하겠습니다.

(소스의 표현방식은 각양각색이니까요!)

 

 

테스트 장비 : 맥미니(2020)

 

버전정보 (v1.0)

 - v1.0 2020.07.01 배포

 

* 저작권에 위반될 수 있는 컨텐츠(이미지, 동영상 등)나 게시글은 삭제되거나 수정될 수 있습니다.

* 문제의 여지가 될 수 있는 컨텐츠의 경우 댓글 달아 주시면 빠른 시일 내에 조치하도록 하겠습니다.

* Karzin은 항상 공부중입니다. 설명이 틀리거나 잘못된 부분이 있다면 의견내주시는대로 수정하도록 하겠습니다.

 

Karzin

abbeea@naver.com


[Xcode] sotryboard에 UI Component 추가하기


솔직히 이건 아실분들은 다 아시겠지만..

Xcode 10부터는 UI Component의 위치가 달라졌습니다.

(저는 이거 몰라서 헤맸다죠 ㅋㅋㅋㅋㅋㅋ)

 

예전엔 분명 우측 하단에 존재했을 UI Component의 위치가 이제는 우측 상단 + 버튼으로 변경되었습니다.

(간만에 iOS개발하느라 바뀐걸 몰랐...)

 

- UI Componet 버튼의 위치

 -> 우측 상단 + 버튼을 찾아보세요. 아래 이미지의 파란색 상자

UI Component는 우측 상단의 + 버튼으로 변경되었습니다.

 

- UI Component 추가하는 방법

 -> 예전처럼 추가하기 원하시는 Component를 마우스로 클릭하신 상태로 드래그 해주시면 됩니다.

Label, Button 등 원하시는 Component를 클릭해서 그대로 드래그하시면 됩니다.

 

예시) Label 추가

Label을 추가한 화면

 

사실 다들 숙지하고 계시리라고는 생각하는데, 저처럼 간만에 Xcode를 만지거나, 옛날 책으로 Xcode에 입문하시는 분들이 아까운 시간을 버릴까봐 작성해봤습니다.

(이러는 저도 저거 하나 찾겠다고 진짜로 뻥아니고 몇십분 날려먹었습..)

 

테스트 장비 : 맥미니(2020)

 

버전정보 (v1.0)

 - v1.0 2020.07.01 배포

 

* 본 게시글의 이미지 및 사진의 출처는 전부 작성자 본인이 직접 제작 및 촬영하였습니다.

* 저작권에 위반될 수 있는 컨텐츠(이미지, 동영상 등)나 게시글은 삭제되거나 수정될 수 있습니다.

* 문제의 여지가 될 수 있는 컨텐츠의 경우 댓글 달아 주시면 빠른 시일 내에 조치하도록 하겠습니다.

* Karzin은 항상 공부중입니다. 설명이 틀리거나 잘못된 부분이 있다면 의견내주시는대로 수정하도록 하겠습니다.

 

Karzin

abbeea@naver.com


[Swift5] intro 화면 만들기

LaunchScreen.storyboard에서 x초간 딜레이 주기


어플을 만들다보면 초기화면에서 x초간 딜레이 후 메인화면으로 이동하는 경우가 있습니다.

 

그런 경우에는 여러 방법이 있겠지만,

제가 사용하는 방법은 LaunchScreen.storyboard에서 1초정도 딜레이를 주는 방법을 사용하고 있습니다.

 

1. LaunchScreen.storyboard 작업

LaunchScreen.storyboard 클릭

 1.1. ViewController에 원하는 로고 등 작업을 합니다.

Image View를 추가한다던가 작업을 진행합니다.

 

2. AppDelegate.swift 작업

AppDelegate.swift 클릭

 2.1. // Override point for customization after application launch 주석을 찾고, 해당 주석 아래에 sleep(1); 코드를 추가

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        sleep(1)
        return true
    }

  --> sleep 함수는 파라미터로 받아온 시간동안 딜레이를 생성 시켜주는 함수입니다. 여기서는 1을 넣었으니 1초가 됩니다.

 

3. 실행 

 --> 실행을 해보시면 1초간 LaunchScreen.storyboard의 내용이 나오고 이후 Main.storyboard로 넘어감을 확인할 수 있습니다.

 

 

 

테스트 정보

 - 맥 미니 (2020) - iPhone SE (1st Gen)

 

버전정보 (v1.0)

 - v1.0 2020.06.30 배포

 

* 저작권에 위반될 수 있는 컨텐츠(이미지, 동영상 등)나 게시글은 삭제되거나 수정될 수 있습니다.

* 문제의 여지가 될 수 있는 컨텐츠의 경우 댓글 달아 주시면 빠른 시일 내에 조치하도록 하겠습니다.

* Karzin은 항상 공부중입니다. 설명이 틀리거나 잘못된 부분이 있다면 의견내주시는대로 수정하도록 하겠습니다.

 

Karzin

abbeea@naver.com



 


[Xcode] 아이폰에서 앱 실행 안되는 문제 해결

 - Could not launch "프로젝트 명"


 

아이폰 에뮬레이터에서 잔뜩 테스트를 진행하다가 실제 아이폰에서 구동을 시킬때 구동이 안될 수 있습니다.

대략 그 느낌은 아래와 같이

더보기

Could not launch "프로젝트 명"

iPhone has denied the launch request.

Internal launch error : ~~~ (길어서 생략)


해결 방법입니다.

아이폰 작업

아이폰-맥 연결 -> 신뢰 -> 암호입력 -> 

신뢰를 하고 암호를 입력합니다.

 

맥 작업 (Xcode)

프로젝트 Run ->  다시한번 Could not launch "프로젝트 명" ->

아이폰 작업

설정 -> 일반 ->

일반 터치

기기관리 ->

기기 관리 터치

개발자 앱 밑에 Apple Development : 애플아이디 ->

Apple Development: 터치

파란색 애플아이디 부분 터치 -> 

파란색 글자(Apple Development: ~) 터치

~앱을 신뢰함 : 신뢰 ->

앱 신뢰

맥 작업 (Xcode)

프로젝트 Run ->

아이폰 작업

앱 실행 및 확인

 

위 작업 한번만 해주시면 연결하신 맥과 아이폰은 계속해서 테스트가 가능합니다.

다만, 새로운 맥에 연결하시는 경우에는 위 작업이 다시 필요하니 잘 숙지해두시면 좋을 것 같습니다.

 

테스트 정보

 - 맥 미니 (2020) - iPhone SE (1st Gen)

 

버전정보 (v1.0)

 - v1.0 2020.06.29 배포

 

* 저작권에 위반될 수 있는 컨텐츠(이미지, 동영상 등)나 게시글은 삭제되거나 수정될 수 있습니다.

* 문제의 여지가 될 수 있는 컨텐츠의 경우 댓글 달아 주시면 빠른 시일 내에 조치하도록 하겠습니다.

* Karzin은 항상 공부중입니다. 설명이 틀리거나 잘못된 부분이 있다면 의견내주시는대로 수정하도록 하겠습니다.

 

Karzin

abbeea@naver.com

 


iOS 14/iPadOS 14 지원기기 리스트 정리!

(WatchOS 7 지원기기 포함!)


오늘 새벽 2시경 WWDC에서 iOS 14를 지원하는 기기가 발표되었습니다.

공개된 영상은 1시간 48분 51초이며, 약 2시간가량 iOS 14의 업데이트된 항목들을 설명하고 있습니다.

 

루머상으로는 iOS 14가 iPhoneOS 14로 변경될 것이라는 이야기가 나왔었는데, 이번 발표를 통해 확인해보니 그렇지는 않은 모양입니다.

 

애플 공식홈페이지(미국)을 참조해보시면(거의 하단) 이번 iOS 14의 지원기기 리스트가 나와있어 정리해보았습니다.

(iPadOS 14 지원기기 리스트도 공식홈페이지(미국)을 참조해보시면(거의 하단) 전부 나오고 있습니다.)

 

- iOS 14 지원기기 리스트

지원기기 초기 iOS 버전 칩셋/메모리 정보
iPhone 11 iOS 13.0 Apple A13 / 4GB
iPhone 11 Pro iOS 13.0 Apple A13 / 4GB
iPhone 11 Pro Max iOS 13.0 Apple A13 / 4GB
iPhone Xs iOS 12.0 Apple A12 / 4GB
iPhone Xs Max iOS 12.0 Apple A12 / 4GB
iPhone Xr iOS 12.0 Apple A12 / 3GB
iPhone X iOS 11.1 Apple A11 / 3GB
iPhone 8 iOS 11.0 Apple A11 / 2GB
iPhone 8 Plus iOS 11.0 Apple A11 / 3GB
iPhone 7 iOS 10.0 Apple A10 / 2GB
iPhone 7 Plus iOS 10.0 Apple A10 / 3GB
iPhone 6s iOS 9.0 Apple A9 / 2GB
iPhone 6s Plus iOS 9.0 Apple A9 / 2GB
iPhone SE (1st generation) iOS 9.3 Apple A9 / 2GB
iPhone SE (2st generation) iOS 13.4 Apple A13 / 3GB
iPod touch (7th generation) iOS 12.3 Apple A10 / 2GB

* iOS 14 지원기기는 iOS 13 지원기기와 동일합니다!

저의 경우 iPhone Xr, SE(1st, 2st gen)을 가지고 있기 때문에 제가 가진 모든 기기가 지원기기 리스트에 들어 있어 기쁘네요.

 

 - iPadOS 14 지원기기 리스트

지원기기 초기 iOS/iPadOS 버전 칩셋 / 메모리 정보
iPad Pro 12.9-inch (4th generation) iPadOS 13 Apple A12Z / 6GB
iPad Pro 11-inch (2nd generation) iPadOS 13 Apple A12Z / 6GB
iPad Pro 12.9-inch (3th generation) iOS 12.1 Apple A12X / 4GB or 6GB
iPad Pro 11-inch (1st generation) iOS 12.1 Apple A12X / 4GB or 6GB
iPad Pro 12.9-inch (2nd generation) iOS 10.3 Apple A10X / 4GB
iPad Pro 12.9-inch (1st generation) iOS 9.1 Apple A9X / 4GB
iPad Pro 10.5-inch iOS 10.3 Apple A10X / 4GB
iPad Pro 9.7-inch iOS 9.3 Apple A9X / 2GB
iPad (7th generation) iPadOS 13.1 Apple A10 / 3GB
iPad (6th generation) iOS 11.3 Apple A10 / 2GB
iPad (5th generation) iOS 10.3 Apple A9 / 2GB
iPad mini (5th generation) iOS 12.2 Apple A12 / 3GB
iPad mini 4 iOS 9.0 Apple A8 / 2GB
iPad Air (3rd generation) iOS 12.2 Apple A12 / 3GB
iPad Air 2 iOS 8.1 Apple A8X / 2GB

* iPadOS 14 지원기기 또한 iPadOS 13 지원기기와 동일합니다!

iPad Air 2의 경우 iOS 8.1부터 시작해서 엄청 오래 지원기기 리스트에 들어가 있습니다.(축하드립니다!)

저는 오래된 iPad Pro 9.7-inch를 사용중에 있어 지원기기에 들어가서 안도랄까, 기쁘달까 어쨌든 아직은 더 써먹을 수 있어서 좋네요!

 

 

 - WatchOS 7 지원기기 목록

지원기기 초기 WatchOS 버전
Apple Watch Series 3 WatchOS 4.0
Apple Watch Series 4 WatchOS 5.0
Apple Watch Series 5 WatchOS 6

저는 Apple Watch Series 3를 사용중에 있어서 이번 업데이트도 지원되네요!

 

 

이번에 발표된 지원기기 목록은 전부 애플 공식홈페이지(미국)를 통해 확인하실 수 있으시며,

저의 경우 제가 소유한 모든 애플 디바이스를 지원하여 지금 정말 굉장히 만족스러운 상태입니다 ㅋ_ㅋ

이 글을 보시는 모든 분들의 디바이스도 지원기기 목록에 들어가 있으면 좋겠네요!

 

 

버전정보 (v1.0)

 - v1.0 2020.06.23 배포

 

* 저작권에 위반될 수 있는 컨텐츠(이미지, 동영상 등)나 게시글은 삭제되거나 수정될 수 있습니다.

* 문제의 여지가 될 수 있는 컨텐츠의 경우 댓글 달아 주시면 빠른 시일 내에 조치하도록 하겠습니다.

* Karzin은 항상 공부중입니다. 설명이 틀리거나 잘못된 부분이 있다면 의견내주시는대로 수정하도록 하겠습니다.

 

Karzin

abbeea@naver.com

 


[Swift] 네비게이션 바의 하단 그림자(line) 제거하기

(Custom Navigation Bar)


iOS 개발 중 네비게이션 바를 커스텀하여 뒤에 있는 배경과 같은 색상으로 지정해주고 하단 그림자(혹은 선, line)까지 제거해야하는 경우가 있습니다.

오늘은 네비게이션 바의 하단 그림자 제거하는 방법을 알아보려합니다.

 

코드를 먼저 살펴보시죠.

 

코드 (Swift5 대응)

navigationBar.setBakcgroundImage(UIImage(), for : UIBarMetrics.default)
navigationBar.shadowImage = UIImage()

 

navigationBar에 setBackgroundImage 함수 설정과, shadowImage 변수 설정만 초기화해주시면 그림자가 제거되는 것을 확인하실 수 있습니다.

 

그림자는 배경이미지가 있는 경우 기본적으로 그림자 이미지가 사용되는 모양입니다.

따라서 아무 값을 넣지 않는 객체 UIImage로 BackgroundImage와 shadowImage를 초기화하면 빈 이미지를 가진 객체로 선언되어 그림자가 들어가지 않게 됩니다. 

 

버전정보 (v1.0)

 - v1.0 2020.06.20 배포

 

* 저작권에 위반될 수 있는 컨텐츠(이미지, 동영상 등)나 게시글은 삭제되거나 수정될 수 있습니다.

* 문제의 여지가 될 수 있는 컨텐츠의 경우 댓글 달아 주시면 빠른 시일 내에 조치하도록 하겠습니다.

* Karzin은 항상 공부중입니다. 설명이 틀리거나 잘못된 부분이 있다면 의견내주시는대로 수정하도록 하겠습니다.

 

Karzin

abbeea@naver.com

 

+ Recent posts