iOS—添加文字水印

廢話不多說了准潭,添加文字水印的步驟如下:
1、創(chuàng)建一個(gè)UIImageView

 -(instancetype)initWithFrame:(CGRect)frame withText:(NSString *)text
  {
         if (self = [super initWithFrame:frame]) {
            self.alpha = 0.4;  //設(shè)置水印透明
            //添加水印 :  Watermark 類文件    WaterImageWithImage:水印圖片 設(shè)置為 @""就是透明背景效果   text:傳入自己想要的水印文字
            self.image = [Watermark view:self WaterImageWithImage:[UIImage imageNamed:@""] text:text];
    }
  return self;
}

2滑燃、創(chuàng)建類文件設(shè)置水印效果 Watermark

/ * 這三個(gè)屬性 主要是讓水印文字和水印文字之間間隔的效果惠猿,以及水印的文字的傾斜角度 ,不設(shè)置默認(rèn)為平行角度*/
#define HORIZONTAL_SPACEING 30//水平間距
#define VERTICAL_SPACEING 50//豎直間距
#define CG_TRANSFORM_ROTATING (M_PI_2 / 3)//旋轉(zhuǎn)角度(正旋45度 || 反旋45度)

@implementation Watermark

+(UIImage*)view:(UIImageView *)view WaterImageWithImage:(UIImage *)image text:(NSString *)text{

//設(shè)置水印大小望艺,可以根據(jù)圖片大小或者view大小
CGFloat  img_w = view.bounds.size.width;
CGFloat  img_h = view.bounds.size.height;

 //1.開啟上下文
//    UIGraphicsBeginImageContext(CGSizeMake(img_w, img_h));
UIGraphicsBeginImageContextWithOptions(CGSizeMake(w, h), NO, 0.0);   
//2.繪制圖片 水印圖片
[image drawInRect:CGRectMake(0, 0, img_w, img_h)];

 /* --添加水印文字樣式--*/
UIFont * font = [UIFont systemFontOfSize:23.0]; //水印文字大小
NSDictionary * attr = @{NSFontAttributeName:font,NSForegroundColorAttributeName:[UIColor orangeColor]}; 
NSMutableAttributedString * attr_str =[[NSMutableAttributedString alloc]initWithString:text attributes:attr];

//文字:字符串的寬、高
CGFloat str_w = attr_str.size.width;
CGFloat str_h = attr_str.size.height;

//根據(jù)中心開啟旋轉(zhuǎn)上下文矩陣肌访,繪制水印文字
CGContextRef context = UIGraphicsGetCurrentContext();

//將繪制原點(diǎn)(0找默,0)調(diào)整到源image的中心
CGContextConcatCTM(context, CGAffineTransformMakeTranslation(img_w/2, img_h/2));
//以繪制原點(diǎn)為中心旋轉(zhuǎn)
CGContextConcatCTM(context, CGAffineTransformMakeRotation(CG_TRANSFORM_ROTATING));

//將繪制原點(diǎn)恢復(fù)初始值,保證context中心點(diǎn)和image中心點(diǎn)處在一個(gè)點(diǎn)(當(dāng)前context已經(jīng)發(fā)生旋轉(zhuǎn)吼驶,繪制出的任何layer都是傾斜的)
CGContextConcatCTM(context, CGAffineTransformMakeTranslation(-w/2, -h/2));

//sqrtLength:原始image對(duì)角線length惩激。在水印旋轉(zhuǎn)矩陣中只要矩陣的寬高是原始image的對(duì)角線長(zhǎng)度,無論旋轉(zhuǎn)多少度都不會(huì)有空白蟹演。
CGFloat sqrtLength = sqrt(img_w*img_w + img_h*img_h);


//計(jì)算需要繪制的列數(shù)和行數(shù)
int count_Hor = sqrtLength / (str_w + HORIZONTAL_SPACEING) + 1;
int count_Ver = sqrtLength / (str_h + VERTICAL_SPACEING) + 1;

//此處計(jì)算出需要繪制水印文字的起始點(diǎn)风钻,由于水印區(qū)域要大于圖片區(qū)域所以起點(diǎn)在原有基礎(chǔ)上移
CGFloat orignX = -(sqrtLength-w)/2;
CGFloat orignY = -(sqrtLength-h)/2;

//在每列繪制時(shí)X坐標(biāo)疊加
CGFloat overlayOrignX = orignX;
//在每行繪制時(shí)Y坐標(biāo)疊加
CGFloat overlayOrignY = orignY;
for (int i = 0; i < count_Hor * count_Ver; i++) {
    //繪制圖片
    [text drawInRect:CGRectMake(overlayOrignX, overlayOrignY, str_w, str_h) withAttributes:attr];
    if (i % count_Hor == 0 && i != 0) {
        overlayOrignX = orignX;
        overlayOrignY += (str_h + VERTICAL_SPACEING);
    }else{
        overlayOrignX += (str_w + HORIZONTAL_SPACEING);
    }
}

 //3.從上下文中獲取新圖片
 UIImage * newImage = UIGraphicsGetImageFromCurrentImageContext();

  [view.layer renderInContext:UIGraphicsGetCurrentContext()];

  //4.關(guān)閉圖形上下文
  UIGraphicsEndImageContext();
  CGContextRestoreGState(context);


  return newImage;
}
@end

/

3.添加水印

Watermark_ImgView * wkImgView =[[Watermark_ImgView alloc]initWithFrame:CGRectMake(0, 0, Screen_Width, Screen_Height) withText:@"自己想要的水印文字"];
// 想要水印不被任何UI遮擋住,就在最后酒请、最后骡技、最后的時(shí)候添加
[self.view addSubview:wkImgView];  
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市羞反,隨后出現(xiàn)的幾起案子布朦,更是在濱河造成了極大的恐慌,老刑警劉巖昼窗,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件是趴,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡澄惊,警方通過查閱死者的電腦和手機(jī)唆途,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門富雅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人肛搬,你說我怎么就攤上這事吹榴。” “怎么了滚婉?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵图筹,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我让腹,道長(zhǎng)远剩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任骇窍,我火速辦了婚禮瓜晤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘腹纳。我一直安慰自己痢掠,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布嘲恍。 她就那樣靜靜地躺著足画,像睡著了一般。 火紅的嫁衣襯著肌膚如雪佃牛。 梳的紋絲不亂的頭發(fā)上淹辞,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音俘侠,去河邊找鬼象缀。 笑死,一個(gè)胖子當(dāng)著我的面吹牛爷速,可吹牛的內(nèi)容都是我干的央星。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼惫东,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼莉给!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起凿蒜,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤禁谦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后废封,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡丧蘸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年漂洋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了遥皂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡刽漂,死狀恐怖演训,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情贝咙,我是刑警寧澤样悟,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站庭猩,受9級(jí)特大地震影響窟她,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蔼水,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一震糖、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧趴腋,春花似錦吊说、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蠢护,卻和暖如春蚤蔓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背糊余。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來泰國打工秀又, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人贬芥。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓吐辙,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親蘸劈。 傳聞我的和親對(duì)象是個(gè)殘疾皇子昏苏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時(shí)...
    歐辰_OSR閱讀 29,383評(píng)論 8 265
  • 孟圓的筆記閱讀 2,402評(píng)論 0 0
  • 吃過晚飯后,我習(xí)慣性的拿起手機(jī)威沫,一打開朋友圈贤惯,就看見閨蜜發(fā)了一條新消息,圖片上是幾碗米飯和幾道普通的家常菜棒掠。上方配...
    五瓣紫丁香閱讀 611評(píng)論 2 3
  • 多想 我在想你的時(shí)候 你剛好也想著我 燈光閃爍著 告訴你 這首歌剛好是我的心境 像鳥在空中撲騰翅膀 落下羽毛孵构、灰塵...
    沛瑾閱讀 163評(píng)論 0 0
  • 不知道怎么說好 昨天晚上應(yīng)該是我們兩個(gè)都最生氣的一次了 我以為我理直氣壯地沒有他我也可以好好的 可是后來我發(fā)現(xiàn)我還...
    青衫不華閱讀 169評(píng)論 0 0