제가 Kotlin으로 Swift의 사용자 정의 보기를 썼어요.

8816 단어 SwiftKotlin

그 녀석?


이 자식이야.
• iOS 사용자 정의 보기

• Android 사용자 정의 뷰

좀 더 구체적으로.


구성 보기는 다음과 같습니다.

Swift/Kotlin으로 이걸 어떻게 쓰는지 해봐.

Warning


1. 코드의 양을 줄이고 스토리보드/XML 링크를 통해 이루어질 수 있는 처리를 정리한다.
2. 구조 함수의 사용 방법, 생명주기를 고려하면 부적절한 부분이 발생할 수 있으니 mm를 양해해 주십시오(지적하신 후 바로 수정해 주십시오)
3. 두 개의 사용자 정의 보기가 모두 기본 보기의 사용자 정의 보기라고 가정한다.
4. 그림의 배경색 지정과 Autolayout 지정 등 각종 할애.

환경


▼iOS
Xcode: ver8.3.3
Swift: ver3.1
▼Android
AndroidStudio: ver2.3
Kotlin: ver1.1.4

iOS 측


코드


사용자 정의 뷰

  • 새 파일 작성에서 "CustomView.swift"
  • 준비
  • Storyboard에서 UILAbel 변수'메시지 Label'을 준비하고 IBOutlet과 함께 성명(Storyboard의 뒷부분)
  • setup () 방법을 만들고 messageLabel에 문자를 설정합니다.
  • CustomView.swif
    import UIKit
    
    class CustomView: UIView {
    
        // 画面内に文字を表示するラベルです。
        @IBOutlet private weak var messageLabel: UILabel!
    
        /// 初期化処理です。
        func setup() {
            messageLabel.text = "This is CustomView…"
        }
    
    }
    
    

    ViewController

  • IBOutlet과 함께 사용자 정의 View 클래스의 변수 "selfView"를 선언합니다.
  • viewDidLoad()에서 사용자 정의View의 초기화 방법을 호출합니다.
  • ViewController.swif
    import UIKit
    
    class ViewController: UIViewController {
    
        // カスタムViewクラスの変数を用意
        @IBOutlet private weak var selfView: CustomView!
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            // カスタムViewの初期化処理呼び出し
            selfView.setup()
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
    
    }
    

    Storyboard


    (그림 1)ViewController에 UIVIew 클래스를 추가합니다.
  • UILAbel을 UIVIew에 넣습니다.
  • (그림 2) selfView 변수(사용자 정의 View)를 연결합니다.(그림3) 사용자 정의 보기의 messageLabel 변수도 마찬가지입니다.
    ↑ 그림 1

    ↑ 그림 2

    ↑ 그림 3

    Android 측


    코드 처리 전에


    Kotlin에서 iOS의 IBOutlet처럼 ID 값으로 XML의 위젯을 지정하는 처리는 "kotlin-android-extension"을 추가해야 합니다.
    ※build.gradle 예(Module:app)입니다.
    build.gradle
    dependencies {
        apply plugin: 'kotlin-android-extensions'
    }
    

    XML


    (그림 4) ConstraintLayout에 LinearLayout을 배치합니다.
    ※ (vertical/horizontal이 있지만 이번에는 아무거나 가능)
  • LinerLayout이 사용자 정의 View이므로 TextView를 배치합니다.
  • (그림 5) TextView를 선택하고 TextView ID를 "message_textview"로 설정합니다.
    ↑ 그림 4

    ↑ 그림 5

    코드


    사용자 정의 뷰

  • 새 파일에 Kotlin 파일을 지정하고 클래스에서 CustomView.kt
  • 준비
  • XML에 준비된 TextView 변수 "message_textview"문자를 init() 로 설정합니다.
  • CustomView.kt
    /**
     * Created by kamui_project on 2017/08/19.
     */
    class CustomView: LinearLayout {
        constructor(context: Context?) : super(context)
        constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs)
        constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)
    
        init {
            LayoutInflater.from(context).inflate(R.layout.activity_main, this)
            message_textview.text = "This is CustomView…"
        }
    
    }
    

    Activity

  • 지연 평가에서 사용자 정의 보기 클래스의 변수 selfView를 선언합니다.
  • onCreate () 의 setContentView () 에서 원래 지정한 XML 파일의 매개 변수에 사용자 정의View를 지정합니다.
  • MainActivity.kt
    class MainActivity : AppCompatActivity() {
    
        // カスタムViewを遅延処理を用いて宣言します。
        private val selfView by lazy { CustomView(this) }
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
    
            // もともとXMLを読んでいた引数にカスタムビューを指定します
            setContentView(selfView)
        }
    }
    

    총결산


    이것은 스위프트 애호가의 해변에서 알을 꼬는 모임. 당신을 방해하고 그곳에서 일하는 자율적인 과제입니다.
    iOS 모임이지만 Android Studio를 설치하고 넥서스와 쳐다보고 있습니다. 무슨 스미슨인지.
    하지만 비틀기 전에 바닷가에서 놀고, 바닷가의 집에서 밥을 먹고, 아름다운 바닷가를 볼 수 있는 방에서 코딩을 하는 환경은 정말 즐겁다.나는 비가 계속 내리는 2017년 여름에 좋은 추억을 쌓고 싶다.
    (자세한 상황은 반드시 누군가가 너에게 상세하게 줄 것이라고 생각해서 확인한 후에 그 링크를 나중에 너에게 주고 싶다.)
    여기서 마치겠습니다.

    얘가 Github로 승진됐어요.

  • iOS
    https://github.com/tony1224/CustomViewForSwift
  • Android
    https://github.com/tony1224/CustomViewForAndroid
  • 좋은 웹페이지 즐겨찾기