iOS開發(fā)零碎知識點

本篇文章記錄了iOS開發(fā)零碎知識點锐锣,簡單又實用!

代碼寫了這么多著洼,但是總是有些知識點在真正需要用到的時候卻遺忘了樟遣,一直想整理這塊知識,最近又總是在趕項目身笤,不管再忙豹悬,這塊總是要整理起來。


iOS開發(fā)零碎知識點

修改Cell分割線距離

修改UITableviewCell的分割線距離通常需要修改separatorInset屬性的top, left, bottom, right:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {

if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {

? ? [cell setSeparatorInset:UIEdgeInsetsMake(0, 15, 0, 15)];

}

if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {

? ? [cell setSeparatorInset:UIEdgeInsetsMake(0, 15, 0, 15)];

}

if ([cell respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)]) {

? ? [cell setPreservesSuperviewLayoutMargins:NO];

}

}

去掉Cell的分割線

myTableView.separatorStyle = UITableViewCellSeparatorStyleNone;

取消Cell的選中效果

myTableView.selectionStyle = UITableViewCellSelectionStyleNone;

將漢字轉(zhuǎn)換為拼音

可以把漢字字符串轉(zhuǎn)換成拼音液荸,并且支持是否在拼音間插入空格

- (NSString*)chineseToPinyin:(NSString*)chinese withSpace:(BOOL)withSpace {

? ? if(chinese) {

? ? ? ? CFStringRefhanzi = (__bridgeCFStringRef)chinese;

? ? ? ? CFMutableStringRefstring =CFStringCreateMutableCopy(NULL,0, hanzi);

? ? ? ? CFStringTransform(string,NULL, kCFStringTransformMandarinLatin,NO);

? ? ? ? CFStringTransform(string,NULL, kCFStringTransformStripDiacritics,NO);

? ? ? ? NSString*pinyin = (NSString*)CFBridgingRelease(string);

? ? ? ? if(!withSpace) {

? ? ? ? ? ? pinyin = [pinyin stringByReplacingOccurrencesOfString:@" "withString:@""];

? ? ? ? }

? ? return pinyin;

? ? }

return nil;

}

重置self.navigationController.viewControllers

NSArray*vcs = self.navigationController.viewControllers;

NSMutableArray*array = [NSMutableArrayarray];

for (inti =0; i < vcs.count; i++) {

UIViewController*temp = [vcsobjectAtIndex:i];

if (![tempisKindOfClass:NSClassFromString(viewControllersName)]) {

[arrayaddObject:temp];

}

}

[self.navigationControllersetViewControllers:arrayanimated:YES];

擴大UIButton點擊區(qū)域

當(dāng)UI設(shè)計圖上的給出按鈕尺寸較小瞻佛,我們將對應(yīng)的資源文件放入UIButton中,在真機調(diào)試中會發(fā)現(xiàn)難以點到按鈕。這時候可以通過繼承UIButton莹弊,重寫pointInside方法涤久,使得按鈕事件響應(yīng)不夠我們設(shè)置的最小區(qū)域的自動擴大到我們的設(shè)置的最小區(qū)域涡尘。

.h定義我們設(shè)置的最小響應(yīng)區(qū)域大小
/**

*? 事件響應(yīng)最小區(qū)域大小(小于此區(qū)域則放大忍弛,否則保持原大小不變,不賦值保持原大小不變)

*/

@property(nonatomic,assign)CGSizeeventFrame;

.m重寫pointInside方法

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent*)event{

CGRectbounds =self.bounds;

CGFloatwidthExtra = MAX(self.eventFrame.width- bounds.size.width,0);

CGFloatheightExtra = MAX(self.eventFrame.width- bounds.size.height,0);

bounds =CGRectInset(bounds, -0.5* widthExtra, -0.5* heightExtra);

returnCGRectContainsPoint(bounds, point);

}

判斷非空字符串

+ (BOOL)isEmptyString:(NSString *)string {

if (string == nil || string == NULL) {

return YES;

}

if ([string isKindOfClass:[NSNull class]]) {

return YES;

}

if ([[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length]==0) {

return YES;

}

return NO;

}

設(shè)置抗壓縮-抗拉伸

[self.textFiledsetContentHuggingPriority:UILayoutPriorityDefaultLowforAxis:UILayoutConstraintAxisHorizontal];[self.textFiledsetContentCompressionResistancePriority:UILayoutPriorityRequiredforAxis:UILayoutConstraintAxisHorizontal];[self.codeImageViewsetContentHuggingPriority:UILayoutPriorityRequiredforAxis:UILayoutConstraintAxisHorizontal];[self.codeImageViewsetContentCompressionResistancePriority:UILayoutPriorityRequiredforAxis:UILayoutConstraintAxisHorizontal];

首次進(jìn)入某一功能模塊判斷

+ (BOOL)isFirstEnterNewModule{

if (![[NSUserDefaults standardUserDefaults] boolForKey:@"firstStart"]) {

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"firstStart"];

[[NSUserDefaults standardUserDefaults] synchronize];

return YES;

}

return NO;

}

視圖過大不響應(yīng)

子視圖超出父視圖考抄,子視圖點擊事件不響應(yīng)细疚。一般子視圖超出父視圖,子視圖點擊等事件是不響應(yīng)的川梅,因為事件的傳遞鏈不會傳到超出父視圖的視圖上面疯兼,需要我們用``hitTest:withEvent:``處理下然遏。

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {

? ? CGPoint hitPoint = [self.cardView.dayRateHelp convertPoint:point fromView:self];

? ? if ([self.cardView.dayRateHelp pointInside:hitPoint withEvent:event])

? ? return self.cardView.dayRateHelp;

? ? return [super hitTest:point withEvent:event];

}

注意:如果父視圖是UIScrollView,需要設(shè)置`self.bgScrollView.clipsToBounds = NO;`吧彪,因為`UIScrollView`默認(rèn)會進(jìn)行裁剪待侵,會導(dǎo)致超出的部分沒有了。

修改holder

修改UITextField的Placeholder的文字顏色和大小姨裸。這里我們使用kvc設(shè)置UITextField的私有屬性秧倾。

[textField setValue:placeholderLabelTextColor forKeyPath:@"_placeholderLabel.textColor"];[textField setValue:[UIFont systemFontOfSize:placeholderLabelFont] forKeyPath:@"_placeholderLabel.font"];

修改UIPageControl圖片

修改UIPageControl的選中圖片和默認(rèn)圖片。默認(rèn)也是不允許修改的傀缩,需要用到kvc設(shè)置那先。

[self.pageControl setValue:currentImage forKey:@"_currentPageImage"];

[self.pageControl setValue:pageImage forKey:@"_pageImage"];

打電話

NSString *phoneNum = @"";

NSURL *phoneURL = [NSURL URLWithString:[NSString stringWithFormat:@"tel:%@",phoneNum]];

if ( !phoneCallWebView ) {

? ? phoneCallWebView = [[UIWebView alloc] initWithFrame:CGRectZero];

}

[phoneCallWebView loadRequest:[NSURLRequest requestWithURL:phoneURL]];

修改系統(tǒng)相機拍照功能

1、將使用照片改成保存至相冊赡艰;

2售淡、監(jiān)聽拍照按鈕點擊事件;

3慷垮、監(jiān)聽重拍按鈕點擊事件揖闸;

4、在拍照里面添加自定義view放到cameraOverlayView上料身。

- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated {

[self addSomeElements:viewController];

}

- (UIView *)findView:(UIView *)aView withName:(NSString *)name {

? ? Class cl = [aView class];

? ? NSString *desc = [cl description];

? ? if ([name isEqualToString:desc]) return aView;

? ? for (UIView *view in aView.subviews) {

? ? ? ? Class cll = [view class];

? ? ? ? NSString *stringl = [cll description];

? ? ? ? if ([stringl isEqualToString:name]) {

? ? ? ? ? ? return view;

? ? ? ? }

? ? }

? ? return nil;

}

- (void)addSomeElements:(UIViewController *)viewController {

? ? UIView *PLCropOverlay = [self findView:viewController.view withName:@"PLCropOverlay"];

? ? UIView *PLCropOverlayBottomBar = [self findView:PLCropOverlay withName:@"PLCropOverlayBottomBar"];

? ? UIView *PLCropOverlayPreviewBottomBar = [self findView:PLCropOverlayBottomBar withName:@"PLCropOverlayPreviewBottomBar"];

? ? UIButton *userButton = [PLCropOverlayPreviewBottomBar.subviews objectAtIndex:2];

? ? UIButton *viewbtn = [[UIButton alloc] init];

? ? [viewbtn setTitle:@"保存至相冊" forState:UIControlStateNormal];

? ? [viewbtn setTitleColor:[UIColor whiteColor] forState:0];

? ? viewbtn.backgroundColor = RGB(19, 20, 21);

? ? [userButton addSubview:viewbtn];

? ? [viewbtn mas_makeConstraints:^(MASConstraintMaker *make) {

? ? ? ? make.trailing.equalTo(userButton.mas_trailing);

? ? ? ? make.centerY.equalTo(userButton);

}];

viewbtn.userInteractionEnabled = NO;

//給拍照加點擊事件

UIView *CMKBottomBar = [self findView:viewController.view withName:@"CMKBottomBar"];

UIButton *CMKShutterButton = (UIButton *) [self findView:CMKBottomBar withName:@"CMKShutterButton"];

[CMKShutterButton addTarget:self action:@selector(shutterButtonClicked) forControlEvents:UIControlEventTouchUpInside];

//監(jiān)聽重拍

UIButton *resetButton = [PLCropOverlayPreviewBottomBar.subviews objectAtIndex:0];

[resetButton addTarget:self action:@selector(resetButtonClicked) forControlEvents:UIControlEventTouchUpInside];

}

注意:viewbtn.userInteractionEnabled = NO;的作用是防止這層視圖的點擊事件影響系統(tǒng)的使用照片按鈕的點擊事件楔壤;在這里給拍照按鈕和重拍按鈕添加了點擊事件,既滿足了自己需要做的事情惯驼,又不影響系統(tǒng)對這兩個按鈕的點擊事件蹲嚣。

iOS10 UIPickerView線條不顯示

#define IOS10_OR_LATER ([[[UIDevice currentDevice] systemVersion] floatValue] >=10.0)

if (IOS10_OR_LATER) {

? ? for (UIView*separatorLine in pickerView.subviews) {

? ? ? ? if (separatorLine.frame.size.height<1) {

? ? ? ? separatorLine.backgroundColor= [UIColorwd_colorWithd0d0d0];

? ? ? ? }

? ? }

}

持續(xù)更新中。祟牲。隙畜。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市说贝,隨后出現(xiàn)的幾起案子议惰,更是在濱河造成了極大的恐慌,老刑警劉巖乡恕,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件言询,死亡現(xiàn)場離奇詭異,居然都是意外死亡傲宜,警方通過查閱死者的電腦和手機运杭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來函卒,“玉大人辆憔,你說我怎么就攤上這事。” “怎么了虱咧?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵熊榛,是天一觀的道長。 經(jīng)常有香客問我腕巡,道長玄坦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任绘沉,我火速辦了婚禮营搅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘梆砸。我一直安慰自己转质,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布帖世。 她就那樣靜靜地躺著休蟹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪日矫。 梳的紋絲不亂的頭發(fā)上赂弓,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天,我揣著相機與錄音哪轿,去河邊找鬼盈魁。 笑死,一個胖子當(dāng)著我的面吹牛窃诉,可吹牛的內(nèi)容都是我干的杨耙。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼飘痛,長吁一口氣:“原來是場噩夢啊……” “哼珊膜!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起宣脉,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤车柠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后塑猖,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體竹祷,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年羊苟,在試婚紗的時候發(fā)現(xiàn)自己被綠了塑陵。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡践险,死狀恐怖猿妈,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情巍虫,我是刑警寧澤彭则,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站占遥,受9級特大地震影響俯抖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瓦胎,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一芬萍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧搔啊,春花似錦柬祠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至旧蛾,卻和暖如春莽龟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背锨天。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工毯盈, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人病袄。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓搂赋,卻偏偏與公主長得像,于是被迫代替她去往敵國和親益缠。 傳聞我的和親對象是個殘疾皇子厂镇,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,834評論 2 345

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

  • 引自:http://m.blog.csdn.net/article/details?id=52180380 記錄一...
    雪_晟閱讀 330評論 0 0
  • *7月8日上午 N:Block :跟一個函數(shù)塊差不多,會對里面所有的內(nèi)容的引用計數(shù)+1左刽,想要解決就用__block...
    炙冰閱讀 2,473評論 1 14
  • 現(xiàn)在是二零一七年九月二十八日欠痴,周四迄靠,雙節(jié)將至。我是在前行的火車上喇辽,可是我并不是回家掌挚,也不是去學(xué)校。 我卻是從一家科...
    燕研小視界閱讀 393評論 2 1
  • 午間美好生活提案 職場人的小成本逼格 一直在說斷舍離陡厘。提到這三個字,你腦海中可能早已浮現(xiàn)出一些概念甚或畫面特占。 比...
    午休在別處閱讀 402評論 0 0
  • 20161206,今早跟孩子溝通糙置,我說:我們說別人好就是說自己好,以后媽媽就說你好是目,不說你不好谤饭。因為說別人就是說自...
    銘瑋閱讀 250評論 0 0