【초보자용】Swift3로 폭속 코딩 그 2(UIView와 문자 표시)

Playground에 의한 코딩입니다.
첫 분은 아래를 참고하십시오.

마지막: 【초보자용】Swift3로 폭속 코딩 그 1(화면 작성과 Snippets의 사용법)

UIView



화면에 UI를 표시하려면 UIKit 프레임워크를 사용합니다.
화면 자체(UIViewController)도 UI이므로 UIKit 프레임워크의 이용은 거의 필수입니다.
import UIKit

iOS의 UI 구성 요소는 UIView 클래스라는 클래스를 상속합니다.
UIView를 상속한 구성 요소에는 다음이 포함됩니다.
  • UILabel : 라벨, 캐릭터 라인 표시
  • UIButton : 버튼
  • UITextField : 텍스트 입력(기본 1행)
  • UITextView : 여러 줄의 텍스트 표시
  • UIImageView : 이미지 표시
  • UISwitch : 스위치, ON, OFF 전환
  • UISlider : 슬라이더, 값을 드래그하여 조정할 수 있습니다
  • UIPickerView : 릴 식 선택
  • UIDatePickerView : 릴 식 선택 (날짜용)
  • UIWebView : 웹 페이지 표시
  • UIProgressBar : 진행률 막대

  • 또한 UIView를 그룹화하고 결합하는 뷰에는 다음과 같은 구성 요소가 있습니다.
  • UIScrollView : 들어갈 수없는 경우에 스크롤하기위한 케이크
  • UITableView : 목록을 표시하기위한 상자
  • UICollectionView : 그리드 표시를위한 케이지
  • UIStackView : 여러 뷰를 정렬하기위한 케이트

  • 구체적으로는 다음과 같은 계층(상속 관계)으로 되어 있습니다(약간 그림이 낡아서 쓰여지지 않은 컴퍼넌트가 있습니다만 거의 변하지 않습니다)



    화면에 문자 표시



    모든 소스 코드입니다.

    Test.playground
    
    import UIKit
    
    
    class ViewController: UIViewController {
    
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
    
            // Labelを作成
            let label: UILabel = UILabel(frame:CGRect(x:0,y:0,width:100,height:50))
            label.text = "Label"
            label.textColor = UIColor.black
            label.shadowColor = UIColor.gray
            label.textAlignment = NSTextAlignment.center
            label.layer.position = CGPoint(x:label.bounds.width/2,y:label.bounds.height/2)
    
            self.view.addSubview(label)
            print(self.view.perform(Selector(("recursiveDescription"))))
    
        }
    
    
        override func viewWillAppear(_ animated: Bool) {
            super.viewWillAppear(animated)
    
    
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
        }
    
    }
    
    let viewController = ViewController()
    viewController.view.backgroundColor = UIColor.white
    
    import PlaygroundSupport
    
    PlaygroundPage.current.liveView = viewController
    PlaygroundPage.current.needsIndefiniteExecution = true
    

    라벨 표시 부분(UILabel)은 다음과 같습니다.
    // Labelを作成
    let label: UILabel = UILabel(frame:CGRect(x:0,y:0,width:100,height:50))
    label.text = "Label"
    label.textColor = UIColor.black
    label.shadowColor = UIColor.gray
    label.textAlignment = NSTextAlignment.center
    label.layer.position = CGPoint(x:label.bounds.width/2,y:label.bounds.height/2)
    
    self.view.addSubview(label)
    

    self.view.addSubview(UIView)를 사용하여
    UIViewController 가 보관 유지하는 UIView 의 아이 요소에 UILabel 를 추가할 수 있습니다.

    미리보기





    UIView 계층 구조



    다음의 1행을 추가하는 것으로 UIView의 프라이빗 메소드인 recursiveDescription 메소드를 호출해 뷰의 계층을 볼 수가 있습니다.
    print(self.view.perform(Selector(("recursiveDescription"))))
    

    UILabel이 하위 뷰로 포함되어 있는지 확인할 수 있습니다.
    Unmanaged<AnyObject>(_value: <UIView: 0x7fd896903090; frame = (0 0; 768 1024); autoresize = W+H; layer = <CALayer: 0x60000003e6c0>>
       | <UILabel: 0x7fd893d05b10; frame = (0 0; 100 50); text = 'Label'; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x60800008ad20>>)
    

    주의적으로 앱에 비공개 메소드가 포함되어 있으면 앱 검토를 통과하지 않으므로
    앱 신청시에는 코멘트 아웃해 주세요(어디까지나 디버그용입니다.)

    Playground가 아니면 View Debugging이라는 기능이 있어, 계층을 입체적으로 시각화할 수도 있습니다만, 그것에 관해서는 또 다른 기회에・・・

    좋은 웹페이지 즐겨찾기