日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用 Core Graphics 绘制基本形状

發布時間:2025/3/17 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用 Core Graphics 绘制基本形状 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者:Arthur Knopper,原文鏈接,原文日期:2015-08-31
譯者:lfb_CD;校對:千葉知風;定稿:shanks

Core Graphics是Cocoa和Cocoa Touch所共有的API。它允許你在畫布上繪制圖形對象。在此篇教程中,我們會繪制一些標準的圖形,比如三角形或者圓形。教程運行在 iOS 9 和 Xcode 7 下。

打開 Xcode 并創建一個new Single View Application項目。項目名稱為IOS9DrawShapesTutorial,接著填上你的Organization Name和Organization Identifier,選擇 Swift 語言,確保在設備一欄只選擇了 IPhone。

打開故事板,在主視圖中拖入三個按鈕,使他們水平對齊,并分別設置title為"Lines, Rectangle, Circle"。之后你的故事板內容應該像下面這樣:

選中所有按鈕,打開Attributes Inspector(屬性檢測器)。在View部分給從左到右的按鈕添上"0,1,2"的tag。tag是我們后面才需要的,我們可以通過tag的值得知哪個按鈕被按下了。

打開Assistant Editor(關聯面板),并確保ViewController.swift文件是打開著的。按住 Ctrl鍵,把Lines按鈕拖出到ViewController.swift文件中,并創建下面的Action

選中其它的按鈕,按住Ctrl鍵并拖到ViewController類的IBAction方法里(剛剛創建的那個Action)。之后我們點擊每一個按鈕就會觸發這里的IBAction方法。繪制的圖形會呈現在一個自定義的視圖中。接下來,我們為項目添加一個新文件。選中File ->New File ->iOS ->Source ->Cocoa Touch Class。類名稱為"ShapeView",確保父類為UIView。

打開ShapeView.swift文件,添加下面的屬性。

var currentShapeType: Int = 0

currentShapeType屬性是用于選擇正確的方法畫出對應的對象。接著添加初始化方法:

init(frame: CGRect, shape: Int) {super.init(frame: frame)self.currentShapeType = shape }required init?(coder aDecoder: NSCoder) {fatalError("init(coder:) has not been implemented") }

當自定義視圖被初始化的時候,tag的值會決定繪制的圖形類型。drawRect方法會在自定義視圖繪制的過程中調用。

override func drawRect(rect: CGRect) {switch currentShapeType {case 0: drawLines()case 1: drawRectangle()case 2: drawCircle()default: print("default")} }

接下來,實現繪圖的方法:

func drawLines() {//1let ctx = UIGraphicsGetCurrentContext()//2CGContextBeginPath(ctx)CGContextMoveToPoint(ctx, 20.0, 20.0)CGContextAddLineToPoint(ctx, 250.0, 100.0)CGContextAddLineToPoint(ctx, 100.0, 200.0)CGContextSetLineWidth(ctx, 5)//3CGContextClosePath(ctx)CGContextStrokePath(ctx) }func drawRectangle() {let center = CGPointMake(self.frame.size.width / 2.0, self.frame.size.height / 2.0)let rectangleWidth:CGFloat = 100.0let rectangleHeight:CGFloat = 100.0let ctx = UIGraphicsGetCurrentContext()//4CGContextAddRect(ctx, CGRectMake(center.x - (0.5 * rectangleWidth), center.y - (0.5 * rectangleHeight), rectangleWidth, rectangleHeight))CGContextSetLineWidth(ctx, 10)CGContextSetStrokeColorWithColor(ctx, UIColor.grayColor().CGColor)CGContextStrokePath(ctx)//5CGContextSetFillColorWithColor(ctx, UIColor.greenColor().CGColor)CGContextAddRect(ctx, CGRectMake(center.x - (0.5 * rectangleWidth), center.y - (0.5 * rectangleHeight), rectangleWidth, rectangleHeight))CGContextFillPath(ctx) }func drawCircle() {let center = CGPointMake(self.frame.size.width / 2.0, self.frame.size.height / 2.0)let ctx = UIGraphicsGetCurrentContext()CGContextBeginPath(ctx)//6 CGContextSetLineWidth(ctx, 5)let x:CGFloat = center.xlet y:CGFloat = center.ylet radius: CGFloat = 100.0let endAngle: CGFloat = CGFloat(2 * M_PI)CGContextAddArc(ctx, x, y, radius, 0, endAngle, 0)CGContextStrokePath(ctx) }
  • 這里的Graphic Context就是你繪圖的畫布。如果你想在一個視圖上繪圖,那么view就是你的畫布。這里我們需要得到一個Graphic Context的引用。

  • path就是一些線條,弧線和曲線的集合,你可以在當前畫布使用它們來構建的復雜對象。這里我們繪制了一些線條并設置了線條的寬度為 5。

  • 此處關閉path,并繪制圖像到畫布上。

  • CGContextAddRect方法給我們繪制了一個長方形,并且外框的顏色為灰色。

  • 這里定義了一個相同的長方形,并填充綠色到內部。

  • CGContextAddArc繪制了一個圓形。

  • 接著,在ViewController.swift文件中實現buttonPressed方法

    @IBAction func buttonPressed(sender: UIButton) {let myView = ShapeView(frame: CGRectMake(50, 200, 280, 250), shape: sender.tag)myView.backgroundColor = UIColor.cyanColor()view.addSubview(myView) }

    編譯并運行程序,點擊不同的按鈕來繪制不同的圖形。

    你可以在Github上下載IOS9DrawShapesTutorial的代碼。

    本文由 SwiftGG 翻譯組翻譯,已經獲得作者翻譯授權,最新文章請訪問 http://swift.gg。

    總結

    以上是生活随笔為你收集整理的使用 Core Graphics 绘制基本形状的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 激情视频在线观看免费 | 欧美裸体精品 | 国产成人精品久久 | 欧美日本精品 | 精品国产理论 | 在线99视频 | 黄色网址在线播放 | 色婷婷综合久久 | 国产国语性生话播放 | 精久久久久久久 | 黄色一大片 | 9191久久 | 日韩美女视频 | 国产欧美一区二区三区国产幕精品 | 日本国产高清 | 91精品一区二区三区四区 | 国产在线激情视频 | 色姑娘天天操 | 亚洲免费大全 | 一区二区黄色 | 视频污在线观看 | 色88久久久久高潮综合影院 | 美女视频三区 | 在线不卡免费视频 | 一区二区三区资源 | 国产精品无码一区二区三区三 | 在线观看免费人成视频 | 一级片a级片 | 看免费黄色片 | 国产精品伦子伦免费视频 | 韩国精品av | 一二三区在线播放 | 插插插网站 | 国产人久久人人人人爽 | www.色偷偷| 龚玥菲三级露全乳视频 | 亚洲网站一区 | 成人午夜在线观看视频 | 国产成人在线观看网站 | 爱爱视频免费看 | 国产精品一区二区三区四区视频 | 青青视频二区 | 久久国产视频播放 | 奇米777视频| 亚洲美女激情视频 | 夜夜爽网站| 天堂√在线 | 久久久久亚洲国产 | 日本xxxx高清 | 国产a久久| 九一九色国产 | 久久久久久久久久网 | 在线精品一区二区 | 无码人妻丰满熟妇啪啪网站 | 99re这里只有精品首页 | 在线观看污视频网站 | 天堂新版8中文在线8 | 欧美人与禽zozzo性之恋的特点 | 夜夜操影院 | 日本少妇喷水 | 国产日韩欧美电影 | 亚洲婷婷久久综合 | 91色偷偷| 伊人一级片 | 91九色视频 | 午夜久草 | 久久久视屏 | 国产欧美精品一区二区三区 | 精品一区二区三区欧美 | 人人搞人人插 | 久久亚洲AV无码专区成人国产 | 欧美 日韩 国产在线 | 国产美女网站视频 | 国产欧美又粗又猛又爽 | 免费在线观看毛片视频 | 久久888| 天天做天天摸天天爽天天爱 | 成人av日韩 | 日本三级午夜理伦三级三 | 好吊视频一区二区三区四区 | 99热亚洲精品 | 销魂奶水汁系列小说 | 久久黄色影视 | 亚洲精品乱码久久久久久黑人 | 日本黄色www | 国产日韩91 | 一本大道av | 亚洲经典久久 | 日韩成人精品在线 | 人妻夜夜爽天天爽三区麻豆av网站 | 亚洲精品免费av | 天天想夜夜操 | 国产古装艳史毛片hd | 成人在线欧美 | 欧美日韩一区二区三区在线视频 | 天天cao| av片在线观看 | 国产精品成人无码免费 | 就要操av|