iOS雜記

有些很簡單的就隨便看看了艘包,我這也是遇到了就記下來

1.iOS開發(fā)加載圖片·imageNamedimageWithContentsOfFile的區(qū)別
分析:
[UIImage imageNamed:@"placeHolder"],imageNamed只適合用于小尺寸圖片的讀取,或重復(fù)使用一張圖片的時(shí)候,而當(dāng)加載一些比較大的圖片文件的時(shí)候我們應(yīng)當(dāng)盡量避免使用這個(gè)方法.
NSString *filePath = [[NSBundle mainBundle] pathForResource:fileName ofType:extension];
 UIImage *image = [UIImage imageWithContentsOfFile:filePath];
當(dāng)有些圖片在應(yīng)用中只使用比較少的次數(shù)的毛萌,就可以用這樣的方式,相比imageNamed會降低內(nèi)存消耗,避免一些內(nèi)存問題.
2.插入數(shù)組元素
insertObject: atIndex:
[array count]-1; 添加到最后一位
例:
 NSArray *arr = @[@"A",@"B",@"C",@"D"];
 NSMutableArray *array = [arr mutableCopy];
 NSInteger arrCount = array.count;
 [array insertObject:@"TheLast" atIndex:arrCount - 1];
3.解決觸控點(diǎn)擊事件和手勢的沖突

一、使用場景:

  • 在項(xiàng)目實(shí)際過程中滞磺,經(jīng)常需要在UITableView,UIScrollView等上添加手勢來取消鍵盤響應(yīng),但是UIScrollView的機(jī)制是接收觸摸事件莱褒,但是會讓手勢暫停一段時(shí)間time-off,會將手勢截留一段時(shí)間击困,使用一個(gè)定時(shí)器來監(jiān)聽自身坐標(biāo)值是否有所改變,如果坐標(biāo)值改變了广凸,說明滑動(dòng)了阅茶,那么就會取消tracking events發(fā)送給subViews蛛枚;相反如果坐標(biāo)值未發(fā)生改變,那么就會將tracking events發(fā)送給子視圖脸哀。
  • 如果在視圖上添加了手勢蹦浦,那么明顯就會有沖突,還好企蹭,蘋果有api幫助我們解決這些問題白筹,實(shí)現(xiàn)這下面代理方法,可以解決觸控點(diǎn)擊事件和手勢的沖突谅摄,包括 UITexFiled,UITableView等等控件單擊事件不響應(yīng)問題徒河。
 - (BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer 
 shouldReceiveTouch:(UITouch *)touch{
 if ([touch.view isKindOfClass:[UITextField class]]){
       return NO;
  }
  // 若為UITableViewCellContentView(即點(diǎn)擊了tableViewCell),則不截獲Touch事件
  if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) {
      return NO;
  }
     return YES;
 }
 tap.cancelsTouchesInView = YES;//是否取消點(diǎn)擊處的其他action
4.設(shè)置button上字體的位置
 button.titleLabel.textAlignment = NSTextAlignmentLeft; 這句無效 
 button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;  
 button.titleEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);
5.清除環(huán)信所有聊天記錄
NSArray *conversations = [[EMClient sharedClient].chatManager loadAllConversationsFromDB];     
 for (EMConversation *con inconversations) {
      [condeleteAllMessages];
  }
6.CRASH: -[NSNull length]: unrecognized selector sent to instance以及-[NSNull rangeOfCharacterFromSet:]: unrecognized selector sent to instance 0的解決方法
7. 修改環(huán)信消息列表的昵稱
  • EaseConversationCell中的- (void)setModel:(id<IConversationModel>)model方法里獲取服務(wù)器中聊天對象的昵稱.
8.在cellForRowAtIndexPath代理方法里面添加以下代碼解決cell的分割線不置頂問題
 if ([cell respondsToSelector:@selector (setSeparatorInset:)]) {
      [cell setSeparatorInset:UIEdgeInsetsZero];
  }
if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
      [cell setLayoutMargins:UIEdgeInsetsZero];
  }
9.UICollectionView不能滑動(dòng)問題
_mainCollection.alwaysBounceVertical = YES;
10.環(huán)信聊天修改用戶頭像圓角度
11.實(shí)現(xiàn)公告跑馬燈效果

一送漠、上下滾動(dòng)

導(dǎo)入#import “HRAdView.h"
@property (nonatomic, strong) HRAdView *adView; // 公告欄
 // 公告欄
_adView = [[HRAdView alloc] initWithTitles:[_dataDict[@"news"] valueForKey:@"title"]];  
_adView.backgroundColor = [UIColor whiteColor]; 
_adView.frame = CGRectMake(110, 0, main_Width- 120, 47);
_adView.textAlignment = NSTextAlignmentLeft;  
_adView.labelFont = kGetSystemFont(16);
_adView.color = GkColor(51, 51, 51);  
_adView.isHaveTouchEvent = YES;
_adView.time= 2.0f;
_adView.edgeInsets = UIEdgeInsetsMake(8, 8,8, 10);
 [_dybamicView addSubview:_adView];

二顽照、水平滾動(dòng)

1.導(dǎo)入#import “YFRollingLabel.h”
@property (nonatomic, strong) YFRollingLabel *label1;
2.實(shí)現(xiàn)下面方法:
 NSArray *arr = [_dataDict[@"news"] valueForKey:@"title"]; 
UIScrollView *scrollView = [[UIScrollView  alloc] initWithFrame:CGRectMake(110, 0, main_Width- 120, 47)];
scrollView.backgroundColor = [UIColor whiteColor];
scrollView.contentSize = CGSizeMake(self.view.frame.size.width, 1000);
[_dybamicView addSubview:scrollView];
_label1 = [[YFRollingLabel alloc] initWithFrame:CGRectMake(0, 0, scrollView.frame.size.width, 47) textArray:arr font:kGetSystemFont(16)textColor:GkColor(51, 51, 51)];
[scrollViewaddSubview:_label1];
_label1.speed= 1;
[_label1 setOrientation:RollingOrientationLeft];
[_label1 setInternalWidth:_label1.frame.size.width / 3];
12.在View里面實(shí)現(xiàn)頁面跳轉(zhuǎn)
13.禁止UITableView的header懸停
- (void)scrollViewDidScroll:(UIScrollView*)scrollView {
if (scrollView == self.mainTableView){
UITableView *tableview = (UITableView*)scrollView;
CGFloat sectionHeaderHeight = 64;    
CGFloat sectionFooterHeight = 44;    
CGFloat offsetY = tableview.contentOffset.y;
if(offsetY >= 0 && offsetY <= sectionHeaderHeight){
   tableview.contentInset = UIEdgeInsetsMake(-offsetY, 0, -sectionFooterHeight, 0);
 }else if (offsetY >= sectionHeaderHeight && offsetY <= tableview.contentSize.height - tableview.frame.size.height
- sectionFooterHeight){
 tableview.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, 0, -sectionFooterHeight, 0);
  }else if (offsetY >= tableview.contentSize.height - tableview.frame.size.height - sectionFooterHeight && offsetY <= tableview.contentSize.height - tableview.frame.size.height){
 tableview.contentInset = UIEdgeInsetsMake(-offsetY, 0, -(tableview.contentSize.height - tableview.frame.size.height
- sectionFooterHeight), 0);
        }
    }
}
14.UIWebView自適應(yīng)寬高
15.返回到指定控制器<[2]是本控制器是第幾級就是幾>
UIViewController *viewCtl = self.navigationController.viewControllers[2];
 [self.navigationController popToViewController:viewCtl animated:YES];
16.讓所有子控件無法響應(yīng)交互
17.使用WKWebView適應(yīng)屏幕尺寸
18.如何查看App在AppStore中的地址
https://itunes.apple.com/cn/app/id1********2?mt=8,將id和闽寡?之間的數(shù)字改成App信息里面的App ID<這個(gè)是蘋果自動(dòng)生成的>
19.多個(gè)button可選唯一性

20.隱藏導(dǎo)航欄下面的線條


21.定時(shí)請求
22.計(jì)算購物車總價(jià)
23.在AppDelegate里面顯示UIAlertController
24.如何在代碼中判斷真機(jī)還是模擬器

25.0x8badf00d表示什么
26.Masonry
mas_equalTo和equalTo
默認(rèn)情況下
mas_equalTo有自動(dòng)包裝功能代兵,比如自動(dòng)將20包裝為@20
equalTo沒有自動(dòng)包裝功能
如果添加了下面的宏,那么mas_equalTo和equalTo就沒有區(qū)別
#define MAS_SHORTHAND_GLOBALS
注意:這個(gè)宏一定要添加到#import "Masonry.h"前面
mas_width和width
默認(rèn)情況下
width是make對象的一個(gè)屬性爷狈,用來添加寬度約束用的植影,表示對寬度進(jìn)行約束
mas_width是一個(gè)屬性值,用來當(dāng)做equalTo的參數(shù)涎永,表示某個(gè)控件的寬度屬性
 如果添加了下面的宏思币,mas_width也可以寫成width
#define MAS_SHORTHAND
 mas_height、mas_centerX以此類推
27.使用Application Loader提交ipa報(bào)錯(cuò)No suitable application records were found. Verify your bundle identifier 'com.scxee.HairdressingDIY' is correct.
解決辦法:在itunes Connect里創(chuàng)建一個(gè)新應(yīng)用就可以了羡微。
28.關(guān)于使用UITableView出現(xiàn)的關(guān)于** Assertion failure in -[UITableView _configureCellForDisplay:forIndexPath:]問題谷饿。
解決方法:實(shí)現(xiàn)- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath代理方法.
29.關(guān)于使用UITableView出現(xiàn)的*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle:問題。
解決方法:在 storyBoard 中設(shè)置的 cell 不用在控制器中注冊妈倔。
30.關(guān)于使用UITableView出現(xiàn)的Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<NSObject 0x6000035df220> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key headerLabel.'問題博投。
解決方法:把約束刪除重現(xiàn)連。
31.關(guān)于使用UITableView出現(xiàn)的*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSSingleObjectArrayI objectAtIndex:]: index 1 beyond bounds [0 .. 0]'問題盯蝴。
解決方法:控制器中如果是 storyboard 拖的靜態(tài) cell毅哗,在控制器中就不要實(shí)現(xiàn)- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section這兩個(gè)代理方法。
32.點(diǎn)擊 UITextField禁止鍵盤彈出结洼。
 self.xxxTF.inputView = [[UIView alloc] initWithFrame:CGRectZero];
33.應(yīng)用內(nèi)調(diào)起微信黎做。
屏幕快照 2018-10-29 下午5.49.47.png

屏幕快照 2018-10-29 下午5.49.57.png
 NSURL *url = [NSURL URLWithString:@"weixin://"];
    BOOL hadInstalledWeixin = [[UIApplication sharedApplication] canOpenURL:url];
    if (hadInstalledWeixin) {
        // 安裝了此 App
        if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 10.0) {
            //設(shè)備系統(tǒng)為IOS 10.0或者以上的
            [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];
        }else{
            //設(shè)備系統(tǒng)為IOS 10.0以下的
            [[UIApplication sharedApplication] openURL:url];
        }
    }else{
        [OMGToast showWithText:@"未安裝微信!"];
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末松忍,一起剝皮案震驚了整個(gè)濱河市蒸殿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖宏所,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酥艳,死亡現(xiàn)場離奇詭異,居然都是意外死亡爬骤,警方通過查閱死者的電腦和手機(jī)充石,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來霞玄,“玉大人骤铃,你說我怎么就攤上這事】谰纾” “怎么了惰爬?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長惫企。 經(jīng)常有香客問我撕瞧,道長,這世上最難降的妖魔是什么狞尔? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任丛版,我火速辦了婚禮,結(jié)果婚禮上偏序,老公的妹妹穿的比我還像新娘页畦。我一直安慰自己,他們只是感情好研儒,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布寇漫。 她就那樣靜靜地躺著,像睡著了一般殉摔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上记焊,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天逸月,我揣著相機(jī)與錄音,去河邊找鬼遍膜。 笑死碗硬,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的瓢颅。 我是一名探鬼主播恩尾,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼挽懦!你這毒婦竟也來了翰意?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎冀偶,沒想到半個(gè)月后醒第,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡进鸠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年稠曼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片客年。...
    茶點(diǎn)故事閱讀 40,561評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡霞幅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出量瓜,到底是詐尸還是另有隱情司恳,我是刑警寧澤,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布榔至,位于F島的核電站抵赢,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏唧取。R本人自食惡果不足惜铅鲤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望枫弟。 院中可真熱鬧邢享,春花似錦、人聲如沸淡诗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽韩容。三九已至款违,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間群凶,已是汗流浹背插爹。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留请梢,地道東北人赠尾。 一個(gè)月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像毅弧,于是被迫代替她去往敵國和親气嫁。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評論 2 359

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

  • 文件下載或者上傳后需要使用 MD5驗(yàn)證文件的完整性够坐,不可簡單的根據(jù)上傳或下載完成后的回調(diào)來判斷是否成功寸宵。 tabv...
    Mory閱讀 222評論 0 2
  • 在這里記錄一些關(guān)于iOS開發(fā)零碎的技巧. 如何通過一個(gè)view拿到該view當(dāng)前的viewController.最...
    小失閱讀 122評論 0 0
  • ·樓主經(jīng)歷過C 開發(fā)崖面,java 開發(fā),現(xiàn)在開始ios開發(fā)邓馒。準(zhǔn)備只學(xué)習(xí)swift 語言嘶朱,第一個(gè)階段的目標(biāo)是完成遙控器...
    _水藍(lán)閱讀 358評論 1 0
  • 好奇觸摸事件是如何從屏幕轉(zhuǎn)移到APP內(nèi)的?困惑于Cell怎么突然不能點(diǎn)擊了光酣?糾結(jié)于如何實(shí)現(xiàn)這個(gè)奇葩響應(yīng)需求疏遏?亦或是...
    Lotheve閱讀 57,303評論 51 599
  • 在iOS開發(fā)中經(jīng)常會涉及到觸摸事件。本想自己總結(jié)一下救军,但是遇到了這篇文章财异,感覺總結(jié)的已經(jīng)很到位,特此轉(zhuǎn)載唱遭。作者:L...
    WQ_UESTC閱讀 6,026評論 4 26