UIButton或UILabel加個下劃線

UIButton

####Objective - C

LXYHyperlinksButton.h

@interface LXYHyperlinksButton : UIButton
{UIColor *lineColor;
}-(void)setColor:(UIColor*)color;
復制代碼

LXYHyperlinksButton.m

#import "LXYHyperlinksButton.h"@implementation LXYHyperlinksButton- (id)initWithFrame:(CGRect)frame
{self = [super initWithFrame:frame];if (self) {}return self;
}-(void)setColor:(UIColor *)color{lineColor = [color copy];[self setNeedsDisplay];
}- (void) drawRect:(CGRect)rect {CGRect textRect = self.titleLabel.frame;CGContextRef contextRef = UIGraphicsGetCurrentContext();CGFloat descender = self.titleLabel.font.descender;if([lineColor isKindOfClass:[UIColor class]]){CGContextSetStrokeColorWithColor(contextRef, lineColor.CGColor);}CGContextMoveToPoint(contextRef, textRect.origin.x, textRect.origin.y + textRect.size.height + descender+1);CGContextAddLineToPoint(contextRef, textRect.origin.x + textRect.size.width, textRect.origin.y + textRect.size.height + descender+1);CGContextClosePath(contextRef);CGContextDrawPath(contextRef, kCGPathStroke);
}@end復制代碼

####Swift

LXYHyperlinksButton.swift

import UIKitclass LXYHyperlinksButton: UIButton {var lineColor: UIColor!internal func setColor(color:UIColor) {if lineColor == nil {lineColor = UIColor.whiteColor()}lineColor = color.copy() as! UIColorself.setNeedsDisplay()}override func drawRect(rect: CGRect) {let textRect: CGRect = self.titleLabel!.framelet contextRef: CGContextRef = UIGraphicsGetCurrentContext()!let descender: CGFloat = self.titleLabel!.font.descenderif lineColor.isKindOfClass(UIColor) {CGContextSetStrokeColorWithColor(contextRef, lineColor.CGColor)}CGContextMoveToPoint(contextRef, textRect.origin.x, textRect.origin.y + textRect.size.height + descender + 1)CGContextAddLineToPoint(contextRef, textRect.origin.x + textRect.size.width, textRect.origin.y + textRect.size.height + descender + 1)CGContextClosePath(contextRef)CGContextDrawPath(contextRef, .Stroke)}}
復制代碼

##UILabel

LXYHyperlinksLabel.h

@interface LXYHyperlinksLabel : UILabel
{UIColor *lineColor;
}-(void)setColor:(UIColor*)color;
復制代碼

LXYHyperlinksLabel.m

#import "LXYHyperlinksLabel.h"@implementation LXYHyperlinksLabel- (id)initWithFrame:(CGRect)frame
{self = [super initWithFrame:frame];if (self) {}return self;
}-(void)setColor:(UIColor *)color{lineColor = [color copy];[self setNeedsDisplay];
}- (void) drawRect:(CGRect)rect {[super drawRect:rect];CGRect textRect = self.frame;CGContextRef contextRef = UIGraphicsGetCurrentContext();CGFloat descender = self.font.descender;if([lineColor isKindOfClass:[UIColor class]]){CGContextSetStrokeColorWithColor(contextRef, lineColor.CGColor);}CGContextMoveToPoint(contextRef, descender+1, textRect.size.height + descender+1);CGContextAddLineToPoint(contextRef, textRect.size.width, textRect.size.height + descender+1);CGContextClosePath(contextRef);CGContextDrawPath(contextRef, kCGPathStroke);
}@end復制代碼

####Git地址:

github.com/xuanyi0627/…

轉載于:https://juejin.im/post/5a3781aa51882512d0607429

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/453349.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/453349.shtml
英文地址,請注明出處:http://en.pswp.cn/news/453349.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

android studio發布項目到github

點擊file setting ,打開對話框,如下,判斷git是否安裝成功 選擇GitHub,填寫github地址及密碼 發布項目: 轉載于:https://www.cnblogs.com/haihai88/p/8514683.html

在不使用{}時,else執行到哪里結束

正常情況下,if-else語句使用{}.執行時也執行{}里面的所有語句,但是當語句比較簡單時, 可以不使用{},而直接在if或else的后面寫要執行的語句。 但是程序只會執行到if或else語句后的第一個“;”其余的程序不在if-else的程序范圍內。

6個變態的C語言寫的Hello World

下面的六個程序片段主要完成這些事情: 輸出Hello, World混亂C語言的源代碼 下面的所有程序都可以在GCC下編譯通過,只有最后一個需要動用C的編譯器g才能編程通過。 hello1.c #define _________ }#define ________ putchar#define _______ main#define …

linux系統pcb軟件下載,開源PCB設計軟件KiCad致力于下一個大版本的發布

KiCad仍然是PCB設計和其他功能的領先開源電子設計套件。KiCad在2018年取得了成功,System76甚至使用了該軟件作為與Thelio臺式計算機一起設計的子板PCB的一部分,但展望未來,開發人員仍在努力開發6.0版本。KiCad 6.0發布方式將采用重新設計的GT…

CocoaPods pod install/pod update更新慢的問題

最近使用CocoaPods來添加第三方類庫,無論是執行pod install還是pod update都卡在了Analyzing dependencies不動原因在于當執行以上兩個命令的時候會升級CocoaPods的spec倉庫,加一個參數可以省略這一步,然后速度就會提升不少。加參數的命令如下…

js call(),apply(),對象冒充,改變變量作用域

1.apply(); function box(n1,n2){return n1n2; } function pox(n1,n2){alert(box.apply(this,[n1,n2])); //this指window下全局屬性//這里沒有返回值,沒有運算,通過冒充box里的運算來執行 } pox(10,20); //30 注:如果參數過多,冒充對象傳參的時候可以寫成arguments fu…

數組元素的地址計算問題(一維到高維)

數組元素存儲地址的計算 一維數組 設一維數組A[n]存放在n個連續的存儲單元中,每個數組元素占一個存儲單元(不妨設為C個連續字節).如果數組元素A[0]的首地址是L,則A[1]的首地址是LC,A[2]的首地址是L2C,… …

侯寧:不該撈的別去撈 踏空不是浪費時間

最近,偶然間在網上看到了一則寓言故事:《駱駝與北斗星》。文章不長,但內容豐富,講得很有趣,很有哲理,也很有啟發。尤其是在股市博弈中,許多人、許多機構都會在現實中扮演故事里的不同角色。因為…

大躍進和循序漸進

大躍進和循序漸進本身沒有對錯,只有跟具體情境結合起來才會產生對錯屬性。 好的大躍進就是不學走先學跑,deadline是第一生產力,一旦學會了更高級的,低級的自然而然就學會了。 好比武裝革命,是先攻打大城市還是攻打農村…

Hibernate 學習(一)

一、Hibernate 簡介 1、Hibernate 簡介 Hibernate是一個開放源代碼的對象關系映射(ORM)框架,它對JDBC進行了非常輕量級的對象封裝,它將POJO與數據庫表建立映射關系,是一個全自動的orm框架,hibernate可以自動生成SQL語句&#xff0…

(嚴蔚敏版)數組的順序存儲表示和實現代碼

#include<stdarg.h>#include<malloc.h> /* malloc()等 */#include<stdio.h> /* EOF(^Z或F6),NULL */#include<stdlib.h> /* atoi() */#include<io.h> /* eof() */#include<math.h> /* floor(),ceil(),abs() */#include<process.h> /…

特殊權限

2.18特殊的權限set_uid [rootcentos-01 ~]# which passwd //查詢一下passwd位置// /usr/bin/passwd[rootcentos-01 ~]# ls -l /usr/bin/passwd //查詢一下passwd權限//-rwsr-xr-x. 1 root root 27832 6月 …

我的職場戰爭--一年來的開發組內戰實錄

一 戰爭準備階段 一年前&#xff0c;國內分社派我帶著幾名程序員來到日本&#xff0c;進入一個世界級大公司做項目&#xff0c;這里先期駐在了一個日本總社的社員X。沒有人想到戰爭已經臨近。 二 戰爭醞釀階段 日本人不會叫你閑著&#xff0c;頭一個月就開始了下馬威。…

linux8重啟服務代碼,linux(centos8):安裝分布式事務服務seata(seata 1.3.0/centos 8.2)

一&#xff0c;什么是seata?Seata:Simpe Extensible Autonomous Transcaction Architecture&#xff0c;是阿里中間件,開源的分布式事務解決方案。前身是阿里的Fescar官方站:http://seata.io/zh-cn/官方代碼地址:https://github.com/seata/seata官方文檔站:http://seata.io/zh…

數組與矩陣的區別

數組中的元素可以是字符等 矩陣中的只能是數 這是二者最直觀的區別。 因為矩陣是一個數學概念&#xff08;線性代數里的&#xff09;&#xff0c;數組是個計算機上的概念。 《精通MATLAB6.5版》&#xff08;張志涌編著&#xff0c;北京航空航天大學出版社&#xff09;中說&…

android自定義view(自定義數字鍵盤)

序言&#xff1a;在上周的項目中&#xff0c;需要做一個密碼鎖的功能&#xff0c;然后密碼下面還得有鍵盤&#xff0c;就類似支付寶支付的時候那樣&#xff1a; 當然了&#xff0c;我們項目的需求簡單點&#xff0c;純數字的就可以了&#xff0c;然后上周就百度了自定義鍵盤&am…

linux環境部署ltmj,Linux系統安裝與簡單配置 圖文.docx

合肥師范學院實驗報告姓名:課程名稱&#xff1a;Linux院(系&#xff1a;計算機學院 專業/年級:實於Lin^系繚公裝與苗瑕肚卅1.占克If Jf VVVork51at>un ?- If -JpMHIWortsktKia^2.?JGJiIjxiS4CLM.lt 1H. iuFI?H?*vW ?tVirtujl Machine Wisa rdGimm Oprraimv加薊aBMkonA …

矩陣的壓縮存儲

5.3 矩陣的壓縮存儲 矩陣是很多科學與工程計算問題中研究的數學對象&#xff0c;在此&#xff0c;我們討論如何存儲矩陣的元&#xff0c;從而使矩陣的各種運算能有效第進行。對于一個矩陣結構顯然用一個二維數組來表示是非常恰當的&#xff0c;但在有些情況下&#xff0c;比如常…

網絡工程師還要學linux嗎,網絡工程師要學什么

想成為一個優秀的網絡工程師&#xff0c;要學什么&#xff0c;怎么學呢?今天小編帶你了解一下網絡工程師到底要學什么。上篇我們講到了“網絡工程師發展方向”&#xff0c;列舉了許多技術方向&#xff0c;那么我們該如何根據自己的定位選擇學習哪些技術。重點是哪些&#xff0…

利用FormData對象實現AJAX文件上傳功能及后端實現

包括HTML基礎設置、CSS界面優化、JS利用FormData對象和AJAX進行上傳、后端接收文件并存儲到指定路徑以及刪除文件操作。FE HTML 基礎的設置&#xff1a; <form enctype"multipart/form-data"><input id"file" type"file" multiple"…