一句話筆記(04)

一句話筆記着饥,某段時(shí)間內(nèi)遇到或看到的某個(gè)可記錄的點(diǎn)。 2016-8-6

  • 1、修改button 點(diǎn)中后的高亮狀態(tài)的顏色
  • 2、KVC 中 forKey,forKeyPath的區(qū)別
  • 3呵恢、Category 不需要引用了,可以直接使用
  • 4媚创、UILabel 中文字居右時(shí)的留空格
1渗钉、修改button 點(diǎn)中后的高亮狀態(tài)的顏色

說明一下,此處不是直接修改背景顏色, 下面這個(gè)是網(wǎng)上流傳的方法钞钙,不過有時(shí)是有用的鳄橘,但此處不是我的需求。

- (void)viewDidLoad {
    [super viewDidLoad];
     
    UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(60, 100, 200, 40)];
    [button setTitle:@"button" forState:UIControlStateNormal];
    [button setBackgroundImage:[self imageWithColor:[UIColor redColor]] forState:UIControlStateNormal];
    [button setBackgroundImage:[self imageWithColor:[UIColor grayColor]] forState:UIControlStateHighlighted];
    [self.view addSubview:button];
}
 
//  顏色轉(zhuǎn)換為背景圖片
- (UIImage *)imageWithColor:(UIColor *)color {
    CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetFillColorWithColor(context, [color CGColor]);
    CGContextFillRect(context, rect);
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return image;
}

經(jīng)過后面我的需求歇竟,唯有通過增加圖片才得以解決:

[button setImage:[UIImage imageNamed:@"normal_pic"] forState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:@"highlighted_pic"] forState:UIControlStateHighlighted];
[button setImage:[UIImage imageNamed:@"selected_pic"] forState:UIControlStateSelected];

當(dāng)然實(shí)際上挥唠,我這邊這個(gè)需求的理解也可以直接將點(diǎn)中后的高亮狀態(tài)的顏色變?yōu)闆]有:

[button setAdjustsImageWhenHighlighted:NO];

具體的還是看需求吧。

2焕议、KVC 中 forKey,forKeyPath的區(qū)別

一般的修改一個(gè)對(duì)象的屬性的時(shí)候,forKey和forKeyPath, 沒什么區(qū)別弧关。但是forKeyPath中可以利用運(yùn)算符, 可以一層一層往下查找對(duì)象的屬性 盅安,能夠找到更深層的屬性。所以用forKeyPath就行了世囊,因?yàn)樗_實(shí)更強(qiáng)大一些别瞭。

3、Category 不需要引用了株憾,可以直接使用

以前我們要使用Category 必須要頭文件引入一下蝙寨,現(xiàn)在當(dāng)我們創(chuàng)建了之后晒衩,它相當(dāng)于放到我們之前的那個(gè)pch文件中,也就是全局引用了墙歪。但是往往有時(shí)候里面我們沒有寫好的情況下听系,一不注意就出錯(cuò)了,一下子不知道錯(cuò)誤在哪里虹菲,所以還是要注意一下的靠胜。

4、UILabel 中文字居右時(shí)的留空格

通常我們用UILabel 的時(shí)候毕源,會(huì)有前面留空格或后面留空格

label.text = [NSString stringWithFormat:@"%@%@",@"  ",@"strOne"];
label.textAlignment = NSTextAlignmentLeft;

但是右邊這樣是是不管用的

label.text = [NSString stringWithFormat:@"%@%@",@"strOne",@"  "];
label.textAlignment = NSTextAlignmentRight;
不管用

\t就好啦

label.text = [NSString stringWithFormat:@"%@%@",@"strOne",@"\t"];
一個(gè)\t的效果

但是那個(gè)邊距也不是能絕對(duì)控制距離的浪漠,要空遠(yuǎn)一點(diǎn)我們可以多加一個(gè)\t, \t在不同型號(hào)的手機(jī)中的顯示那個(gè)距離是不一樣的, 所以要精準(zhǔn),還是得用其他辦法霎褐,自定義之類的址愿。

常用的方法就是直接繼承UILabel, 增加一個(gè)edgeInsets 屬性,重寫

// override points. can adjust rect before calling super.
// label has default content mode of UIViewContentModeRedraw
- (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines;
- (void)drawTextInRect:(CGRect)rect;

然后設(shè)置冻璃。下面是模仿iOS-設(shè)置UILabel的內(nèi)邊距所寫的一個(gè)繼承UILabel:

#import <UIKit/UIKit.h>

@interface YSLabel : UILabel

@property (nonatomic, assign) UIEdgeInsets edgeInsets;

@end
#import "YSLabel.h"

@implementation YSLabel

- (instancetype)initWithFrame:(CGRect)frame {
    if(self = [super initWithFrame:frame]) {
        _edgeInsets = UIEdgeInsetsMake(0, 0, 0, 20);
    }
    return self;
}

- (instancetype)initWithCoder:(NSCoder *)aDecoder {
    if (self = [super initWithCoder:aDecoder]) {
        _edgeInsets = UIEdgeInsetsMake(0, 0, 0, 20);
    }
    return self;
}

- (void)awakeFromNib {
    [super awakeFromNib];
    self.edgeInsets = UIEdgeInsetsMake(0, 0, 0, 20);
}

- (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines
{
    
    CGRect rect = [super textRectForBounds:UIEdgeInsetsInsetRect(bounds,
                                                                 _edgeInsets) limitedToNumberOfLines:numberOfLines];
    //根據(jù)edgeInsets响谓,修改繪制文字的bounds
    rect.origin.x -= _edgeInsets.left;
    rect.origin.y -= _edgeInsets.top;
    rect.size.width += _edgeInsets.left + _edgeInsets.right;
    rect.size.height += _edgeInsets.top + _edgeInsets.bottom;
    return rect;
}

//繪制文字
- (void)drawTextInRect:(CGRect)rect
{
    [super drawTextInRect:UIEdgeInsetsInsetRect(rect, _edgeInsets)];
}

@end

當(dāng)然此處我是先寫死設(shè)置靠右距離20的。如果需要額外設(shè)置俱饿,我們直接在外部設(shè)置edgeInsets就OK啦歌粥。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市拍埠,隨后出現(xiàn)的幾起案子失驶,更是在濱河造成了極大的恐慌,老刑警劉巖枣购,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嬉探,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡棉圈,警方通過查閱死者的電腦和手機(jī)涩堤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來分瘾,“玉大人胎围,你說我怎么就攤上這事〉抡伲” “怎么了白魂?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)上岗。 經(jīng)常有香客問我福荸,道長(zhǎng),這世上最難降的妖魔是什么肴掷? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任敬锐,我火速辦了婚禮背传,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘台夺。我一直安慰自己径玖,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布谒养。 她就那樣靜靜地躺著挺狰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪买窟。 梳的紋絲不亂的頭發(fā)上丰泊,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音始绍,去河邊找鬼瞳购。 笑死,一個(gè)胖子當(dāng)著我的面吹牛亏推,可吹牛的內(nèi)容都是我干的学赛。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼吞杭,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼盏浇!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起芽狗,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤绢掰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后童擎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體滴劲,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年顾复,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了班挖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡芯砸,死狀恐怖萧芙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情假丧,我是刑警寧澤末购,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站虎谢,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏曹质。R本人自食惡果不足惜婴噩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一擎场、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧几莽,春花似錦迅办、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至纤垂,卻和暖如春矾策,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背峭沦。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工贾虽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人吼鱼。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓蓬豁,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親菇肃。 傳聞我的和親對(duì)象是個(gè)殘疾皇子地粪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

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

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件琐谤、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,103評(píng)論 4 62
  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,140評(píng)論 30 470
  • 目錄【連載】我的燒情史(六)小淫娃研究 (七)性感往事 命運(yùn)總是捉弄人蟆技。 這封信沒有如我所愿幫我找到失散18年的兒...
    李放fun閱讀 1,223評(píng)論 4 11
  • 你們有見過,固執(zhí)急躁愛生氣笑跛,而且生完氣以后還長(zhǎng)期無法排解的人嗎付魔?有見過這種人的生存狀態(tài)嗎?很榮幸飞蹂,我身邊就...
    瑞雪吉祥閱讀 645評(píng)論 0 1