SlideShare ist ein Scribd-Unternehmen logo
1 von 38
CoreGraphicsでつくる
自作UIコンポーネント入門
DOTAPON Software
@cocopon




http://dotapon.sakura.ne.jp
cocoponって誰ですか
             @cocopon
             デザイナに憧れる
             ホビープログラマです


Windows用の      Mac用の       iPhone用の
 ゲームとか      オフラインブログとか    クミタテ電卓とか




               Osciroi      Calqum
今日のお題…の前に
  前回発表のハイライト




  …救世主があらわれた!
今日のお題…の前に
XVim!! Vimmerは今すぐダウンロードすべし

   https://github.com/JugglerShu/XVim




              見覚えのある「コマンドライン」が!
              これで勝てる!!!
今日のお題
  ステキなUIのアプリ、たくさんありますよね


Path     Twittelator Neue   Paylog
今日のお題
  どれもUIKit標準では用意されていない…




ど う や って 作 ってるん だろう?
今日のお題

  オープンソースの
  フキダシUIコンポーネント
  「CMPopTipView」を題材に、




  CoreGraphicsを使った
  UIコンポーネント自作の
  基礎を見てみよう
準備OK?




https://github.com/chrismiles/CMPopTipView
読むぞ!
CMPopTipView
画像リソースは…ありません!

     CMPopTipView.hと
    CMPopTipView.mのみ




    どうやって描いてるの?
描画処理のキホン
 [UIView drawRect: ... ] 内で…

 1. 点をつないで「パス」をつくる




2. パスを塗ったり、影をつけたりする
なぜ画像を使わないのか
       メリットが大きいから!            デメリットもある
★  
      実行時のカスタマイズが容易   ★  
                            コードで描くので少し面倒
      色とか、角丸のサイズとか…         複雑な描画は心が折れる




★  
      画像リソースがないので、
      その分サイズが小さくなる
描画処理の準備
       UIGraphicsGetCurrentContext




CGContextRef c = UIGraphicsGetCurrentContext();



           描画するときに必要です
パス用の変数を用意する
            CGPathCreateMutable




 CGMutablePathRef bubblePath =
CGPathCreateMutable();




     “Mutable” は「変更可能」という意味
         少しずつパスを作っていける
フキダシの方向で処理を分ける
 
   if (pointDirection == PointDirectionUp) {
 
   
 ...
 
   }
 
   else {
 
   
 ...
 
   }


PointDirectionUp                        PointDirectionDown




                                  今回はこちら側を読み進めます
パスの始点を決める
             CGPathMoveToPoint


   
   CGPathMoveToPoint(bubblePath, NULL,
               targetPoint.x,
               targetPoint.y);
パスに直線を追加
                   CGPathAddLineToPoint



   
   CGPathAddLineToPoint(bubblePath, NULL,
                 targetPoint.x-pointerSize,
                 targetPoint.y-pointerSize);
パスに角丸を追加
                           CGPathAddArcToPoint

CGPathAddArcToPoint(
  bubblePath, NULL,
  bubbleRect.origin.x, bubbleRect.origin.y + bubbleRect.size.height,
  bubbleRect.origin.x, bubbleRect.origin.y + bubbleRect.size.height - cornerRadius,
  cornerRadius);




                                                     CGPathAddArcToPoint(
                                                       追加するパス, NULL,
                                                       角のX, Y,
                                                       終点のX, Y,
                                                       角丸の半径)
残りの角丸を追加




 同じ要領で残りも追加する
パスを閉じる
      CGPathCloseSubpath


   CGPathCloseSubpath(bubblePath);




これで1周して、フキダシ形のパスが完成!
パスを描く、その前に
       CGContextSave(/Restore)GState

CGContextSaveGState(c);

CGContextAddPath(c, bubblePath);
CGContextSetShadow(c, CGSizeMake(0, 3), 5);
CGContextSetRGBFillColor(c, 0.0, 0.0, 0.0, 0.9);
CGContextFillPath(c);

CGContextRestoreGState(c);


          コンテキストに設定した情報
         (描画色やパスなど)を保存/復元


    描画処理のカタマリごとに囲って、
他のカタマリに影響が出ないように書くのがベター
影を描く
       CGContextSetShadow, ~FillPath
CGContextSaveGState(c);

CGContextAddPath(c, bubblePath);
CGContextSetShadow(c, CGSizeMake(0, 3), 5);
CGContextSetRGBFillColor(c, 0.0, 0.0, 0.0, 0.9);
CGContextFillPath(c);

CGContextRestoreGState(c);



                            CGContextSetShadow(
                              コンテキスト,
                              影の位置のずれ,
                              ぼかし量)

                            設定した色・パスの形で影を描画
背景グラデーションを準備する
               CGColorGetComponents
   int numComponents =
      CGColorGetNumberOfComponents([backgroundColor
 CGColor]);
   const CGFloat *components =
      CGColorGetComponents([backgroundColor CGColor]);

   if (numComponents == 2) {
       red = components[0];
       green = components[0];
       blue = components[0];
       alpha = components[1];
   }
   else {
       red = components[0];
       green = components[1];
       blue = components[2];



              背景色の色要素を分解して
            red, green, blue, alpha を取得
背景グラデーションを準備する

 CGFloat colorList[] = {

 
 //red, green, blue, alpha

 
 red*1.16+colourHL, green*1.16+colourHL, blue*1.16+colourHL,
alpha,

 
 red*1.16+colourHL, green*1.16+colourHL, blue*1.16+colourHL,
alpha,

 
 red*1.08+colourHL, green*1.08+colourHL, blue*1.08+colourHL,



                        1.16倍: 明るく
                        1.16倍: 明るく
                        1.08倍: ちょっと明るく
                        背景色
                        背景色
背景グラデーションを作成する
            CGGradientCreateWithColorComponents
CGFloat bubbleMiddle = (bubbleRect.origin.y + bubbleRect.size.height / 2))
               / self.bounds.size.height;
CGFloat locationList[] = {0.0,
                bubbleMiddle - 0.03, bubbleMiddle, bubbleMiddle + 0.03,
                1.0};
...

myGradient =
  CGGradientCreateWithColorComponents(
    myColorSpace, colorList, locationList, locationCount);


                               0.0



                               bubbleMiddle            ±0.03



                               1.0
背景を塗る
                     CGContextDrawLinearGradient

   CGContextAddPath(c, bubblePath);

   CGContextClip(c);

    ...


   CGPoint startPoint, endPoint;

   startPoint.x = 0;

   startPoint.y = 0;

   endPoint.x = 0;

   endPoint.y = CGRectGetMaxY(self.bounds);



          CGContextClipでフキダシ型にクリップしてから塗る
作ったものは、解放しよう
                    CG*Release
          CGGradientRelease(myGradient);
          CGColorSpaceRelease(myColorSpace);

          ...

          CGPathRelease(bubblePath);




Create~ な関数で作ったものは、
解放しないとリークするよ

                                               「ちゃんと解放してね」

ドキュメントにしっかりと
書いてあります
文字を描く
           [NSString drawInRect: ... ]




[textColor set];

CGRect textFrame = [self contentFrame];
[self.message drawInRect:textFrame
           withFont:textFont
       lineBreakMode:UILineBreakModeWordWrap
          alignment:UITextAlignmentCenter];
自作の幅をさらに広げる
   キーワード
CoreAnimation
       複雑なアニメーション




                   CAKeyframeAnimationで
                    Path風のメニューを実現




https://github.com/levey/AwesomeMenu/
CoreAnimation
                3次元の変形




                           CATransform3Dで
                        Clear風の折り畳みを実現




https://github.com/mpospese/MPFoldTransition/
作りはじめる、その前に
そのコンポーネント、もうあるかもよ
    車輪の再発明はもったいない
    まずはネットで探してみよう

          Cocoa Controls




     http://cocoacontrols.com/
作り終わった、そのあとは
世界に公開してみよう
   受けた恩恵は還元して、
 「みんなでハッピー」を目指そう

      github.com
自分も公開してみました
 https://github.com/cocopon/CQMFloatingController




                      クミタテ電卓Calqumの
                      定数選択用コンポーネントを
                      整理・切り出し


                      CoreGraphics使用、画像不使用
                      今回の内容の復習に最適!
自分も公開してみました
 https://github.com/cocopon/CQMFloatingController




                      クミタテ電卓Calqumの
                      定数選択用コンポーネントを
                      整理・切り出し


                      CoreGraphics使用、画像不使用
                      今回の内容の復習に最適!
CoreGraphicsでつくる
自作UIコンポーネント入門

              DOTAPON Software
                    @cocopon
     http://dotapon.sakura.ne.jp

Weitere ähnliche Inhalte

Was ist angesagt?

GLSLによるシェーダーアートことはじめ
GLSLによるシェーダーアートことはじめGLSLによるシェーダーアートことはじめ
GLSLによるシェーダーアートことはじめYoichi Hirata
 
WebGL and Three.js
WebGL and Three.jsWebGL and Three.js
WebGL and Three.jsyomotsu
 
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法Hiroshi Yoshida
 
Three.jsで3D気分
Three.jsで3D気分 Three.jsで3D気分
Three.jsで3D気分 Toshio Ehara
 
背景にCanvasを動かす
背景にCanvasを動かす背景にCanvasを動かす
背景にCanvasを動かすtakashi umezu
 
Androidプログラミング初心者のためのゲームアプリ開発入門
Androidプログラミング初心者のためのゲームアプリ開発入門Androidプログラミング初心者のためのゲームアプリ開発入門
Androidプログラミング初心者のためのゲームアプリ開発入門Masahiko Mizuta
 
Coma studyroom
Coma studyroomComa studyroom
Coma studyroomCohei Aoki
 
Webデザイン 第10回:HTML5実践 Three.jsで3Dプログラミング
Webデザイン 第10回:HTML5実践 Three.jsで3DプログラミングWebデザイン 第10回:HTML5実践 Three.jsで3Dプログラミング
Webデザイン 第10回:HTML5実践 Three.jsで3DプログラミングAtsushi Tadokoro
 
ARコンテンツ作成勉強会:C#ではじめようOpenCV(カラートラッキング編)
ARコンテンツ作成勉強会:C#ではじめようOpenCV(カラートラッキング編)ARコンテンツ作成勉強会:C#ではじめようOpenCV(カラートラッキング編)
ARコンテンツ作成勉強会:C#ではじめようOpenCV(カラートラッキング編)Takashi Yoshinaga
 
openFrameworks Workshop in Kanazawa v001
openFrameworks Workshop in Kanazawa v001openFrameworks Workshop in Kanazawa v001
openFrameworks Workshop in Kanazawa v001Teruaki Tsubokura
 
C++11概要 ライブラリ編
C++11概要 ライブラリ編C++11概要 ライブラリ編
C++11概要 ライブラリ編egtra
 
FiltersでGLSLを楽しく学んじゃおう!
FiltersでGLSLを楽しく学んじゃおう!FiltersでGLSLを楽しく学んじゃおう!
FiltersでGLSLを楽しく学んじゃおう!Kazuya Hiruma
 
㉑CSSでアニメーション!その2
㉑CSSでアニメーション!その2㉑CSSでアニメーション!その2
㉑CSSでアニメーション!その2Nishida Kansuke
 
Real timeimageprocessing
Real timeimageprocessingReal timeimageprocessing
Real timeimageprocessingushiostarfish _
 
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGLMedia Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGLAtsushi Tadokoro
 
これからのJavaScriptの話
これからのJavaScriptの話これからのJavaScriptの話
これからのJavaScriptの話Shogo Sensui
 

Was ist angesagt? (20)

GLSLによるシェーダーアートことはじめ
GLSLによるシェーダーアートことはじめGLSLによるシェーダーアートことはじめ
GLSLによるシェーダーアートことはじめ
 
WebGL and Three.js
WebGL and Three.jsWebGL and Three.js
WebGL and Three.js
 
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
 
Three.jsで3D気分
Three.jsで3D気分 Three.jsで3D気分
Three.jsで3D気分
 
背景にCanvasを動かす
背景にCanvasを動かす背景にCanvasを動かす
背景にCanvasを動かす
 
Gocon2013
Gocon2013Gocon2013
Gocon2013
 
Androidプログラミング初心者のためのゲームアプリ開発入門
Androidプログラミング初心者のためのゲームアプリ開発入門Androidプログラミング初心者のためのゲームアプリ開発入門
Androidプログラミング初心者のためのゲームアプリ開発入門
 
Coma studyroom
Coma studyroomComa studyroom
Coma studyroom
 
Webデザイン 第10回:HTML5実践 Three.jsで3Dプログラミング
Webデザイン 第10回:HTML5実践 Three.jsで3DプログラミングWebデザイン 第10回:HTML5実践 Three.jsで3Dプログラミング
Webデザイン 第10回:HTML5実践 Three.jsで3Dプログラミング
 
enchant.js勉強会
enchant.js勉強会enchant.js勉強会
enchant.js勉強会
 
ARコンテンツ作成勉強会:C#ではじめようOpenCV(カラートラッキング編)
ARコンテンツ作成勉強会:C#ではじめようOpenCV(カラートラッキング編)ARコンテンツ作成勉強会:C#ではじめようOpenCV(カラートラッキング編)
ARコンテンツ作成勉強会:C#ではじめようOpenCV(カラートラッキング編)
 
openFrameworks Workshop in Kanazawa v001
openFrameworks Workshop in Kanazawa v001openFrameworks Workshop in Kanazawa v001
openFrameworks Workshop in Kanazawa v001
 
GTC2011 Japan
GTC2011 JapanGTC2011 Japan
GTC2011 Japan
 
C++11概要 ライブラリ編
C++11概要 ライブラリ編C++11概要 ライブラリ編
C++11概要 ライブラリ編
 
FiltersでGLSLを楽しく学んじゃおう!
FiltersでGLSLを楽しく学んじゃおう!FiltersでGLSLを楽しく学んじゃおう!
FiltersでGLSLを楽しく学んじゃおう!
 
0720 abc seminar
0720 abc seminar0720 abc seminar
0720 abc seminar
 
㉑CSSでアニメーション!その2
㉑CSSでアニメーション!その2㉑CSSでアニメーション!その2
㉑CSSでアニメーション!その2
 
Real timeimageprocessing
Real timeimageprocessingReal timeimageprocessing
Real timeimageprocessing
 
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGLMedia Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
 
これからのJavaScriptの話
これからのJavaScriptの話これからのJavaScriptの話
これからのJavaScriptの話
 

Andere mochten auch

ARCでめちゃモテiOSプログラマー
ARCでめちゃモテiOSプログラマーARCでめちゃモテiOSプログラマー
ARCでめちゃモテiOSプログラマーSatoshi Asano
 
Amazon ec2とは何か?
Amazon ec2とは何か?Amazon ec2とは何か?
Amazon ec2とは何か?Shinya_131
 
Herokuで作るdevise認証サイト
Herokuで作るdevise認証サイトHerokuで作るdevise認証サイト
Herokuで作るdevise認証サイトFukui Osamu
 
120529 railsとか勉強会v2
120529 railsとか勉強会v2120529 railsとか勉強会v2
120529 railsとか勉強会v2Yoshiteru Toki
 
Core Image Tips & Tricks in iOS 9
Core Image Tips & Tricks in iOS 9Core Image Tips & Tricks in iOS 9
Core Image Tips & Tricks in iOS 9Shuichi Tsutsumi
 
いまさら聞けないUnity小技
いまさら聞けないUnity小技いまさら聞けないUnity小技
いまさら聞けないUnity小技Yuichi Ishii
 
Unity5.3の機能まとめ
Unity5.3の機能まとめUnity5.3の機能まとめ
Unity5.3の機能まとめKeigo Ando
 

Andere mochten auch (10)

Air printで遊んでみた
Air printで遊んでみたAir printで遊んでみた
Air printで遊んでみた
 
mq 使ってみたよ
mq 使ってみたよmq 使ってみたよ
mq 使ってみたよ
 
ARCでめちゃモテiOSプログラマー
ARCでめちゃモテiOSプログラマーARCでめちゃモテiOSプログラマー
ARCでめちゃモテiOSプログラマー
 
Amazon ec2とは何か?
Amazon ec2とは何か?Amazon ec2とは何か?
Amazon ec2とは何か?
 
vImageのススメ
vImageのススメvImageのススメ
vImageのススメ
 
Herokuで作るdevise認証サイト
Herokuで作るdevise認証サイトHerokuで作るdevise認証サイト
Herokuで作るdevise認証サイト
 
120529 railsとか勉強会v2
120529 railsとか勉強会v2120529 railsとか勉強会v2
120529 railsとか勉強会v2
 
Core Image Tips & Tricks in iOS 9
Core Image Tips & Tricks in iOS 9Core Image Tips & Tricks in iOS 9
Core Image Tips & Tricks in iOS 9
 
いまさら聞けないUnity小技
いまさら聞けないUnity小技いまさら聞けないUnity小技
いまさら聞けないUnity小技
 
Unity5.3の機能まとめ
Unity5.3の機能まとめUnity5.3の機能まとめ
Unity5.3の機能まとめ
 

Ähnlich wie Core Graphicsでつくる自作UIコンポーネント入門

静岡Developers勉強会 HTML5&CSS3
静岡Developers勉強会 HTML5&CSS3静岡Developers勉強会 HTML5&CSS3
静岡Developers勉強会 HTML5&CSS3yaju88
 
ソフトウェア工学2023 10 デバッグ
ソフトウェア工学2023 10 デバッグソフトウェア工学2023 10 デバッグ
ソフトウェア工学2023 10 デバッグToru Tamaki
 
Python physicalcomputing
Python physicalcomputingPython physicalcomputing
Python physicalcomputingNoboru Irieda
 
Cocoa勉強会pdf関連
Cocoa勉強会pdf関連Cocoa勉強会pdf関連
Cocoa勉強会pdf関連OCHI Shuji
 
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由kikairoya
 
T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門伸男 伊藤
 
OpenCVの拡張ユーティリティ関数群
OpenCVの拡張ユーティリティ関数群OpenCVの拡張ユーティリティ関数群
OpenCVの拡張ユーティリティ関数群Norishige Fukushima
 
Android Lecture #04 @PRO&BSC Inc.
Android Lecture #04 @PRO&BSC Inc.Android Lecture #04 @PRO&BSC Inc.
Android Lecture #04 @PRO&BSC Inc.Yuki Higuchi
 
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜勝成 鈴江
 
cocos2d-xとネイティブ間の連携
cocos2d-xとネイティブ間の連携cocos2d-xとネイティブ間の連携
cocos2d-xとネイティブ間の連携Tomoaki Shimizu
 
C base design methodology with s dx and xilinx ml
C base design methodology with s dx and xilinx ml C base design methodology with s dx and xilinx ml
C base design methodology with s dx and xilinx ml ssuser3a4b8c
 
Pf部2012年1月勉強会.androidsola
Pf部2012年1月勉強会.androidsolaPf部2012年1月勉強会.androidsola
Pf部2012年1月勉強会.androidsolaandroid sola
 
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めようAdvancedTechNight
 
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会Jumpei Ogawa
 
try! Swift - Advanced Graphics with Core Animation
try! Swift - Advanced Graphics with Core Animationtry! Swift - Advanced Graphics with Core Animation
try! Swift - Advanced Graphics with Core AnimationTim Oliver
 
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」Tomoaki Shimizu
 

Ähnlich wie Core Graphicsでつくる自作UIコンポーネント入門 (20)

静岡Developers勉強会 HTML5&CSS3
静岡Developers勉強会 HTML5&CSS3静岡Developers勉強会 HTML5&CSS3
静岡Developers勉強会 HTML5&CSS3
 
Hands on
Hands onHands on
Hands on
 
ソフトウェア工学2023 10 デバッグ
ソフトウェア工学2023 10 デバッグソフトウェア工学2023 10 デバッグ
ソフトウェア工学2023 10 デバッグ
 
Python physicalcomputing
Python physicalcomputingPython physicalcomputing
Python physicalcomputing
 
Cocoa勉強会pdf関連
Cocoa勉強会pdf関連Cocoa勉強会pdf関連
Cocoa勉強会pdf関連
 
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
 
emc++ chapter32
emc++ chapter32emc++ chapter32
emc++ chapter32
 
T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門
 
Arctic.js
Arctic.jsArctic.js
Arctic.js
 
OpenCVの拡張ユーティリティ関数群
OpenCVの拡張ユーティリティ関数群OpenCVの拡張ユーティリティ関数群
OpenCVの拡張ユーティリティ関数群
 
Android Lecture #04 @PRO&BSC Inc.
Android Lecture #04 @PRO&BSC Inc.Android Lecture #04 @PRO&BSC Inc.
Android Lecture #04 @PRO&BSC Inc.
 
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
 
cocos2d-xとネイティブ間の連携
cocos2d-xとネイティブ間の連携cocos2d-xとネイティブ間の連携
cocos2d-xとネイティブ間の連携
 
C base design methodology with s dx and xilinx ml
C base design methodology with s dx and xilinx ml C base design methodology with s dx and xilinx ml
C base design methodology with s dx and xilinx ml
 
Pf部2012年1月勉強会.androidsola
Pf部2012年1月勉強会.androidsolaPf部2012年1月勉強会.androidsola
Pf部2012年1月勉強会.androidsola
 
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
 
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
 
try! Swift - Advanced Graphics with Core Animation
try! Swift - Advanced Graphics with Core Animationtry! Swift - Advanced Graphics with Core Animation
try! Swift - Advanced Graphics with Core Animation
 
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」
 
Hupc 1
Hupc 1Hupc 1
Hupc 1
 

Kürzlich hochgeladen

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 

Kürzlich hochgeladen (9)

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 

Core Graphicsでつくる自作UIコンポーネント入門

Hinweis der Redaktion

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n