読者です 読者をやめる 読者になる 読者になる

@niwakk7 iPhoneアプリ作っていますよ

iPhoneアプリ作ってます。調べたことを、ゆるく残していきます。

UITabBarControllerの実装

プログラムで実装するときの書き方。

まずは、AppDelegate.swift

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    internal var window: UIWindow?
    private var myTabBarController: UITabBarController!

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool {
        
        window = UIWindow(frame: UIScreen.mainScreen().bounds)
        
        let myFirstTab: UIViewController = FirstViewController()
        let mySecondTab: UIViewController = SecondViewController()
        let myTabs = NSArray(objects: myFirstTab, mySecondTab)
        
        myTabBarController = UITabBarController()
        myTabBarController?.setViewControllers((myTabs as? [UIViewController])!, animated: false)
        self.window!.rootViewController = myTabBarController
        self.window!.makeKeyAndVisible()
        
        return true
    }

    func applicationWillResignActive(application: UIApplication) {}
    func applicationDidEnterBackground(application: UIApplication) {}
    func applicationWillEnterForeground(application: UIApplication) {}
    func applicationDidBecomeActive(application: UIApplication) {}
    func applicationWillTerminate(application: UIApplication) {}
}

つづいて、FirstViewController.swift

class FirstViewController: UIViewController {
    
    init() {
        super.init(nibName: nil, bundle: nil)
        
        self.view.backgroundColor = UIColor.cyanColor()
        self.tabBarItem = UITabBarItem(tabBarSystemItem: UITabBarSystemItem.Featured, tag: 1)
    }
    
    required override init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!) {
        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
    }

    required init(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

そして、FirstViewController.swift

class SecondViewController: UIViewController {
    
    init() {
        super.init(nibName: nil, bundle: nil)
        
        self.view.backgroundColor = UIColor.redColor()
        self.tabBarItem = UITabBarItem(tabBarSystemItem: UITabBarSystemItem.Featured, tag: 2)
    }
    
    required override init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!) {
        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
    }

    required init(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

Info.plistのMain storyboard file base nameパラメータをちゃんと消すこと!

Storyboardを拡大縮小をする。

Storyboard上のダブルクリックで拡大縮小をいったりきたりできる。
倍率は以下で設定。

f:id:niwakk7:20160109162506p:plain

StoryBoard上のViewControllerからNavigationController、TabBarControllerを挿入する。

StoryBoard上で挿入先のViewControllerを選択し、メニューバーのEditorからNavigationControllerかTabBarControllerを選択する。

f:id:niwakk7:20160109161521p:plain

そんな方法があったのか。

UILabelを使って円を描く。

UILabelを使って円を描く方法。

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        var width:CGFloat = 150
        var height:CGFloat = 150
        
        //radiusを一辺の半分にする
        var radius = width / 2
        
        let circleLabel: UILabel = UILabel(frame: CGRectMake(0,0,width,height))
        circleLabel.backgroundColor = UIColor.orangeColor()
        circleLabel.layer.masksToBounds = true
        circleLabel.layer.cornerRadius = radius
        circleLabel.layer.borderColor = UIColor.blackColor().CGColor
        circleLabel.layer.borderWidth = 1.0
        circleLabel.textColor = UIColor.whiteColor()
        circleLabel.shadowColor = UIColor.grayColor()
        circleLabel.font = UIFont.systemFontOfSize(CGFloat(30))
        circleLabel.textAlignment = NSTextAlignment.Center
        circleLabel.layer.position = CGPoint(x: self.view.bounds.width/2,y: 300)
        circleLabel.text = "12"
        self.view.addSubview(circleLabel)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

目一杯円を描くView

swift 基礎

drawCircleViewというカスタムクラスをつくり、ViewControllerで描画する。

ViewController側

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        var myDrawView: UIView!
        myDrawView = drawCircleView(frame: CGRectMake(0, 0, 100, 100))
        myDrawView.backgroundColor = UIColor.grayColor()
        
        self.view.addSubview(myDrawView)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

カスタムクラスのdrawCircleView

import UIKit


class drawCircleView: UIView {
    override init(frame:CGRect){
        super.init(frame: frame)
    }

    required init(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    override func drawRect(rect: CGRect) {

        var radius = rect.width / 2
        let circlePoint = CGPointMake(radius, radius)
        
        let myCircle: UIBezierPath = UIBezierPath(arcCenter: circlePoint,
            radius: radius,
            startAngle: 0.0,
            endAngle: CGFloat(M_PI*2),
            clockwise: false)

        UIColor.redColor().setStroke()
        myCircle.lineWidth = 3.0
        myCircle.stroke()
    }
}

PlaygroundでUIViewを表示する。

swift 基礎

やっとSwiftで開発することになったので、これからコツコツ勉強を開始する。
まずは、UIViewをPlayground上で表示してみる。

var view = UIView()
view.frame.size
view.frame.origin
view.frame.size.width = 100
view.frame.size.height = 100
view.frame

CGRectの設定は以下のような感じで。

CGRect(x:0, y:0, width:100, height:100)

そして、合わせワザ。

UIView(frame: CGRect(x:0, y:0, width:100, height:100)).frame


右横のポチを押すと、表示してくれる。

f:id:niwakk7:20160107222446p:plain

【Swift基礎】変数宣言、代入

Swift基礎

変数は、普通の変数と定数を分ける必要がある。
var->変数
let->定数(これは別記事で)

//変数宣言
var msg: String
 
//代入
msg = "hello world"
 
//宣言+代入
var msg: String = "hello world"

//または、
var msg = "hello world"