1. 程式人生 > >Core Graphics 101: 弧線和軌跡

Core Graphics 101: 弧線和軌跡

這是本教程系列的第三部分,講解如何通過例項使用Core Graphics API!

在第一部分教程系列中,我們通過製作一個美觀的tablie view cell 背景,講解了如何繪製線,矩形和顏色漸變。

在第二部分教程系列中,我們通過製作一個美觀的table view cell header,講解了如何繪製陰影和光滑效果。

在本篇教程中,我們將通過為table view新增footer和結束觸控事件來結束table view的製作。在教程中,我們也將學習繪製弧線,裁剪和軌跡的相關內容!

如果你還沒有本教程的例子程式碼, 可以在這裡下載上篇教程的程式碼。

開始

我們首先要做的,是用15畫素點高的紅色view去替換掉footer – 就像前面的教程那樣做 – 以確保一切運作正常。

到現在,你應該相當熟悉如何操作了… 那為何不自己做一遍呢?如果遇到什麼問題,你都可以隨時回到這裡。

…等待…

…等待…

…等待…

Tomato-San is angry!

Tomato-San 生氣了!

什麼?!你現在還在這裡發呆?!你可以做到的 – 繼續嘗試下吧!:]

解決方案

假如你遇到任何麻煩,以下是解決方案。

確保你的 ”Groups & Files”下面的“Classes”分組被選中,前往選單項的 ”FileNew File…”,選擇iOSCocoa Touch Class,Objective-C class,確保”Subclass of UIView”被選中,然後點選下一步。命名檔案為”CustomFooter.m”,確保”Also create CustomFooter.h”被選中,然後點選”Finish”。

切換到CustomFooter.m檔案,取消drawRect方法的註釋,然後使用以下程式碼替換掉原來的內容:

CGContextRef context = UIGraphicsGetCurrentContext();
CGColorRef redColor = [UIColor colorWithRed:1.0 green:0.0 
    blue:0.0 alpha:1.0].CGColor;
 
CGContextSetFillColorWithColor(context, redColor);
CGContextFillRect(context, self.bounds)
;

然後切換到RootViewController.m檔案,根據以下程式碼做修改:

// In import section

#import "CustomFooter.h"
// Add new methods
-(CGFloat) tableView:(UITableView *)tableView 
    heightForFooterInSection:(NSInteger)section {
    return 15;
}
- (UIView *) tableView:(UITableView *)tableView 
    viewForFooterInSection:(NSInteger)section {
    return [[[CustomFooter alloc] init] autorelease];
}

編譯並執行工程,如果一切執行正常,你將看到以下畫面:

Table View Footer Placeholder

回到正題

既然現在我們在當前區域有一個預留的view,我們對它美化下吧。首先,先為接下來的操作重新整理記憶體。

Zoomed image of Table View Footer

注意以下對上圖效果的描述:

  • 頁面底部有一條勻整的弧線。
  • 頁面有從淺灰色到深灰色的漸變效果。
  • 在頁面的左右邊緣還有種白色的高亮顯示效果。
  • 頁面的弧線下部有一塊合適的陰影效果。

顯然這裡的新效果就是弧線。讓我們對它做一點討論。

建立弧線 – 數學問題

從示意圖可以看出,我們想要的弧線只是一塊有很大半徑,從特定的開始角度到特定的結束角度的大圓頂部。

Diagram of the circle that our arc is part of

那現在我們如何用Core Graphics去描述這段弧線呢?好的,我們將要使用的API是CGContextAddArc API,作為這個函式的輸入引數,我們需要告訴Core Graphics以下三項內容:

  1. 圓的中心點
  2. 圓的半徑
  3. 繪製弧線的開始點和結束點

相關推薦

Core Graphics 101: 弧線軌跡

這是本教程系列的第三部分,講解如何通過例項使用Core Graphics API! 在第一部分教程系列中,我們通過製作一個美觀的tablie view cell 背景,講解了如何繪製線,矩形和顏色漸變。 在第二部分教程系列中,我們通過製作一個美觀的table view cell heade

iOS繪圖—— UIBezierPath Core Graphics

font object move -s 決定 三角形 參數 ren crt 前言 iOS系統本身提供了兩套繪圖的框架,即UIBezierPath 和 Core Graphics。而前者所屬UIKit,其實是對Core Graphics框架關於path的進一步封裝,所以使用

Swift3.0 新的 GCD Core Graphics

DispatchQueue 首先,dispatch 的全域性函式不再寫為下劃線風格的名稱了,它變成了一個更符合 Swift 風格的 DispatchQueue 的樣子。 main thread 同樣的,你不需要在去用 dispatch_get_main_queue ( ) 來獲取主執行緒,而是 Di

在drawRect:方法中繪制圖片,文字以及Core Graphics 框架的了解

graphic csg line 要求 arc 畫圖 cgrect 有一個 get p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000 } p.p2 { margin: 0.0

改變core文件名稱生成路徑

core文件 時間 new man rom core family pan style echo "/mnt/nfs/core-%e-%p-%t" > /proc/sys/kernel/core_pattern core-函數名-pid-時間戳改變core文件名稱和生

ASP.NET Core:使用DapperSwaggerUI來豐富你的系統框架

fig targe api 依賴 dev 多表 efault 方便 div 一、概述 1、用VS2017創建如下圖的幾個.NET Standard類庫,默認版本為1.4,你可以通過項目屬性進行修改,最高支持到1.6,大概五月份左右會更新至2.0,API會翻倍,很期待!

談談在.NET Core中使用RedisMemcached的序列化問題

rman -m string create 讓其 ride builder cnblogs ron 前言 在使用分布式緩存的時候,都不可避免的要做這樣一步操作,將數據序列化後再存儲到緩存中去。 序列化這一操作,或許是顯式的,或許是隱式的,這個取決於使用的package是否有

NET Core中使用RedisMemcached

前言 date toa 聯系 timespan 執行 mod init rtu 前言 在使用分布式緩存的時候,都不可避免的要做這樣一步操作,將數據序列化後再存儲到緩存中去。 序列化這一操作,或許是顯式的,或許是隱式的,這個取決於使用的package是否有幫我們做這樣一件事

Core Graphics框架 利用Quartz 2D繪圖

ext inter xxxx 默認 win 建立 contex 利用 href 首先,什麽是Core Graphics和Quartz 2D? Core Graphics:是基於Quartz 2D繪圖引擎的一個C語言的API繪圖框架。它也是iOS開發中最基本的框架(Frame

ASP.NET Core 2.0 IHostEnvironmentIApplicationLifetime介紹

pat onstop cat clas alt 監控 gis 開發 class IHostEnvironment獲取程序信息 public void Configure(IApplicationBuilder app, IHostingEnvironment env)

iOS實現圖形編程可以使用三種API(UIKIT、Core Graphics、OpenGL ES及GLKit)

圖像處理 運動 esper 之前 類方法 ati ima quartz 環境 這些api包含的繪制操作都在一個圖形環境中進行繪制。一個圖形環境包含繪制參數和所有的繪制需要的設備特定信息,包括屏幕圖形環境、offscreen 位圖環境和PDF圖形環境,用來在屏幕表面、一個位圖

101-C#.net框架

C#是.NET裡的一個程式語言。   BCL:Base Class Library基類庫 BCL包括: 通用基礎類 - 檔案操作 字串操作 集合類 - 列表 字典 ... 執行緒和同步類 - 多執行緒程式 XML類 - 建立,讀取以及操作XML文件 編譯過

【機器人學】機器人開源專案KDL原始碼學習:(3)機器人操作空間路徑規劃(Path Planning)軌跡規劃(Trajectory Planning)示例

很多同學會把路徑規劃(Path Planning)和軌跡規劃(Trajectory Planning)這兩個概念混淆,路徑規劃只是表示了機械臂末端在操作空間中的幾何資訊,比如從工作臺的一端(A點)沿直線移動到另一端(B點)。而軌跡規劃則加上了時間律,比如它要完成的任務是從A點開始到B點結束,中間

ASP.NET Core 中的會話應用狀態

原文地址:https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/app-state?view=aspnetcore-2.1 作者:Rick Anderson、Steve Smith、Diana LaRose 和 Luke Latham

ASP.NET Core 2.0身份角色管理入門

目錄 介紹 身份驗證和授權 身份驗證 授權 背景 先決條件 使用程式碼 第1步:建立資料庫 第2步:建立ASP.NET Core  更新appsettings.json 步驟3:在Startup.cs檔案中新增Identity Service

MATLAB-Robotics工具箱(2)座標變換軌跡規劃

在理解關節機器人運動學原理的基礎上用MATLAB開始做機器人的運動學模擬1.關節引數 要在MATLAB建立機器人物件,首先要了解D-H引數,利用工具箱的LINK和ROBOT函式建立物件。 LINK函式 L = LINK([alpha A theta D]) L

.net core cookie登錄session的 DataProtectionProvider 加入 redis

new bsp storage ogr pro section get algorithm apr string redisConnectionString = Configuration.GetSection("Storage:R

更簡單的ASP.NET Core多語言(國際化本地化, 歡迎轉載)

想到我還在Github上懟工程師對.NET Core多語言實現不好就生氣, 現在才感到學識淺薄是多麼可怕的一件事, 對不起, 是我太菜了, 是我太菜, 是我太菜, 學的東西太少, 對不起, 對不起, 我為我的魯莽而傷心 其實在.NET Core有更好的多語言實現方式 #新

Entity Framework Core 執行SQL語句儲存過程

無論ORM有多麼強大,總會出現一些特殊的情況,它無法滿足我們的要求。在這篇文章中,我們介紹幾種執行SQL的方法。 表結構 在具體內容開始之前,我們先簡單說明一下要使用的表結構。 public class Category { pub

為什麼 web 開發人員需要遷移到. NET Core, 並使用 ASP.NET Core MVC 構建 web webservice/API

2018 .NET開發者調查報告: .NET Core 是怎麼樣的狀態,這裡我們看到了還有非常多的.net開發人員還在觀望,本文給大家一個建議。這僅代表我的個人意見, 我有充分的理由推薦.net 程式設計師使用. net core而不是. net Framework。有些人可能不同意我的觀點, 但是分享想法和