m_shige1979のときどきITブログ

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

Github(変なおっさんの顔でるので気をつけてね)

https://github.com/mshige1979

swiftで画像の生成サンプル(playgroundを使用)

参考


Swiftで遊んでますか? - クックパッド開発者ブログ

デザインとかは疎いんで

なんかいい感じのものがあったら参考にしようと思いましてm(_ _)m

サンプル(Playgroundで準備)

基本
// Playground - noun: a place where people can play

import UIKit

var str = "Hello, playground"

// ビューのサイズ
let size = CGSize(width: 200, height: 200)
// UIViewを生成
let view:UIView = UIView(frame: CGRect(origin: CGPointZero, size: size))
view.backgroundColor = UIColor(white: 0.9, alpha: 1.0)
// PlaygroundのTimelineに表示するためのview
let preview = view
最初はイメージが見えていないのでクリックしてイメージを表示

f:id:m_shige1979:20141220100531p:plain

f:id:m_shige1979:20141220100732p:plain

ちょっとだけ加工

Swiftで遊んでますか? - クックパッド開発者ブログ

のものをほぼパクったんですけど

// Playground - noun: a place where people can play

import UIKit

var str = "Hello, playground"

func UIColorFromRGB(rgbValue: UInt) -> UIColor {
    return UIColor(
        red: CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0,
        green: CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0,
        blue: CGFloat(rgbValue & 0x0000FF) / 255.0,
        alpha: CGFloat(1.0)
    )
}

// ビューのサイズ
let size = CGSize(width: 200, height: 200)
// UIViewを生成
let view:UIView = UIView(frame: CGRect(origin: CGPointZero, size: size))
view.backgroundColor = UIColor(white: 0.9, alpha: 1.0)

// CoreGraphicsで描画する
UIGraphicsBeginImageContextWithOptions(size, false, 0)

// 描画する
let path = UIBezierPath()
path.moveToPoint(CGPointMake(50, 50));
path.addLineToPoint(CGPointMake(150, 50))
path.addLineToPoint(CGPointMake(150, 150))
path.addLineToPoint(CGPointMake(50, 150))
path.addLineToPoint(CGPointMake(50, 50))
UIColor.orangeColor().setStroke()
path.stroke()

UIColorFromRGB(0xFF0000).setFill()
path.fill()

// 文字を描画する
let attrString = NSAttributedString(
    string: "サンプル",
    attributes:[NSForegroundColorAttributeName: UIColor.blackColor(),
        NSFontAttributeName: UIFont.boldSystemFontOfSize(20.0)])
attrString.drawAtPoint(CGPointMake(50, 50))

// viewのlayerに描画したものをセットする
view.layer.contents = UIGraphicsGetImageFromCurrentImageContext().CGImage

UIGraphicsEndImageContext()

// PlaygroundのTimelineに表示するためのview
let preview = view

f:id:m_shige1979:20141220103147p:plain

文字や線を描画できるようです

所感

だんだんイメージが出来上がっていくのは面白いと思いました。

やってみたいけど、
そもそも描画うんぬんがわかっていないのでそこから学習しないといけない。
複数のことを併用すると時間がかかりそうだけどわかっていないことを後回しにするとあとでまた同じことに時間を費やすことも考えられるので基本的な部分だけでも理解しておく必要がありそうです。

とりあえず、UIGraphicsBeginImageContextとかから調べてみないと…