iOS 開發中使用到的小技巧匯總

來源:互聯網
上載者:User

標籤:

國慶即將來到,一個小項目也即將完成,把自己在項目中用的一些小技巧寫出來,方便尋找。

1,去掉分割線--動畫設定透明度alpha//去掉tableView的分隔線:    self.tableView.separatorStyle=UITableViewCellSeparatorStyleNone;    self.tableView.showsVerticalScrollIndicator=NO; 2. 解決cell分割線左邊短20px的問題-(void)viewDidLayoutSubviews{    if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) {        [self.tableView setSeparatorInset:UIEdgeInsetsMake(0,0,0,0)];    }     if ([self.tableView respondsToSelector:@selector(setLayoutMargins:)]) {        [self.tableView setLayoutMargins:UIEdgeInsetsMake(0,0,0,0)];    }} -(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{    if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {        [cell setSeparatorInset:UIEdgeInsetsZero];    }     if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {        [cell setLayoutMargins:UIEdgeInsetsZero];    }} typedef NS_ENUM(NSInteger, UITableViewCellStyle) {
    UITableViewCellStyleDefault,    // 左側顯示textLabel(不顯示detailTextLabel),imageView可選(顯示在最左邊)
    UITableViewCellStyleValue1,        // 左側顯示textLabel、右側顯示detailTextLabel(預設藍色),imageView可選(顯示在最左邊)
    UITableViewCellStyleValue2,        // 左側依次顯示textLabel(預設藍色)和detailTextLabel,imageView可選(顯示在最左邊)
    UITableViewCellStyleSubtitle    // 左上方顯示textLabel,左下方顯示detailTextLabel(預設灰色),imageView可選(顯示在最左邊)};  //取消選中效果
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
   
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
   }  2,更改Xcode的預設公司名 在終端輸入defaults write com.apple.Xcode PBXCustomTemplateMacroDefinitions ‘{"ORGANIZATIONNAME" = "COMPANY";}‘    3,如何使螢幕一直保持喚醒狀態?(就是不自動黑屏)比如,如果我們做一個播放視頻的功能時,想在播放的時候,不會自動進入屏保(黑屏)只要在代碼裡加入這一行:[[UIApplication sharedApplication] setIdleTimerDisabled:YES];    4,在Xcode中,檔案名稱後小方框中的A(M或C)表示什麼意思啊?

 表示在版本控制中,自上一次提交以來,檔案做了修改。貌似只有在帶有版本控制的項目代碼中才會顯示,也就是說你的項目使用了SVN、Git等工具後,會在Xcode中識別出來。

 ‘A‘  新增

‘D‘  刪除

‘M‘  修改

‘R‘  替代

‘C‘  衝突

‘I‘  忽略

‘?‘  未受控
‘!‘  丟失,一般是將受控檔案直接刪除導致  5,如何隱藏UINavigationBar

有的時候,我們的視圖使用了Navigation Controller ,但是主介面(rootviewcontroller)或其它push進入的介面 想使用一個全屏的view,就是說,不顯示頂部的navigationBar,這個時候,就需要我們來隱藏了。

//隱藏NavigationBar

 -(void) viewWillAppear:(BOOL)animated{    [self.navigationControllersetNavigationBarHidden:YESanimated:YES]; //設定隱藏

    [super viewWillAppear:animated];

}

-(void) viewWillDisappear:(BOOL)animated{

  [self.navigationControllersetNavigationBarHidden:NOanimated:YES];    [super viewWillDisappear:animated];} 6,怎麼儲存選中的按鈕,下一次點擊取消上一次點擊的按鈕://當前選中的按鈕@property (nonatomic, weak) UIButton *selecteButton;- (void)btnClick:(UIButton *)button
{
    _selecteButton.selected = NO;
    button.selected = YES;
    _selecteButton = button;} 7,擷取當前螢幕的點數   //當前螢幕的比例  如果視網膜 = 2,如果是非視網膜= 1 6Plus為3    CGFloat scale = [UIScreen mainScreen].scale;//切割一張圖片  bigImage.CGImage要切割的圖片,clipRect要切割的大小CGImageRef smallImage = CGImageCreateWithImageInRect(bigImage.CGImage, clipRect); 8.某些情況下,如果控制器的view是從xib載入的,並且是600*600,當在控制器上再加一個控制器的view的時候,圖片會縮放,可能會因為縮放太嚴重而導致沒有顯示出來,需要把autoresizingMask(縮放)清掉.  9.父子控制器的重要性如果控制器1不是控制器2的子控制器,那麼2的事件就傳不到1裡了,dismiss的時候也是回不去的。 10,設定選中圖片和文本的高亮狀態 // 設定普通圖片
        cell.imageView.image = [UIImage imageNamed:c.icon];
        // 設定高亮圖片(cell選中 -> cell.imageView.highlighted = YES -> cell.imageView顯示highlightedImage這個圖片)
        cell.imageView.highlightedImage = [UIImage imageNamed:c.highlighted_icon];
               // 設定label高亮時的文字顏色        cell.textLabel.highlightedTextColor = [UIColor redColor]; 11.修改 UITableview 捲軸顏色的方法 UITableview 的捲軸預設顏色是黑色的,如果 UItableview 背景也是深顏色,則捲軸會變的很不明顯。您可以用下面這行代碼來改變捲軸的顏色self.tableView.indicatorStyle=UIScrollViewIndicatorStyleWhite; 當然,最後的 “White” 也可以換成其它顏色。  12.列印設定(在PCH檔案中設定)//調試的列印發布之後自動取消
#ifdef DUBUG
#define LGFLog(...) NSLog(__VA_ARGS__)
#else
#define LGFLog(...)#endif#ifdef DEBUG#define LGFLog(s,...) NSLog( @"[%@ 行數 %d ] =====>%@", [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__] )#else
#define LGFLog(s,...)#endif//定義一個列印函數的輸出#define LGFLogFunc LGFLog(@"%s",__func__) 怎麼設定所有的控制器的切換返回鍵都是同一格式的返回在自訂的navigationController裡設定/**
 * 可以在這個方法中攔截所有push進來的控制器
 */
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    if (self.childViewControllers.count > 0) { // 如果push進來的不是第一個控制器
        UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
        [button setTitle:@"返回" forState:UIControlStateNormal];
        [button setImage:[UIImage imageNamed:@"navigationButtonReturn"] forState:UIControlStateNormal];
        [button setImage:[UIImage imageNamed:@"navigationButtonReturnClick"] forState:UIControlStateHighlighted];
        button.size = CGSizeMake(70, 30);
        // 讓按鈕內部的所有內容靠左對齊
        button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
//        [button sizeToFit];
        // 讓按鈕的內容往左邊位移10
        button.contentEdgeInsets = UIEdgeInsetsMake(0, -10, 0, 0);
        [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
        [button setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted];
        [button addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside];
        viewController.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];
        // 隱藏tabbar
        viewController.hidesBottomBarWhenPushed = YES;
    }
   
    // 這句super的push要放在後面, 讓viewController可以覆蓋上面設定的leftBarButtonItem
    [super pushViewController:viewController animated:animated];
   
}

- (void)back
{
    [self popViewControllerAnimated:YES];} MRC與ARC的轉換

 

字串的清空設定TableView預設選中首行    [self.categoryTableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:UITableViewScrollPositionTop]; 修改項目的名稱 開啟顯示隱藏檔案 
  • 顯示     defaults write com.apple.finder AppleShowAllFiles -bool true
  • 隱藏   defaults write com.apple.finder AppleShowAllFiles -bool false
     killall Finder    方法一:在Dock 表徵圖上操作

  按住 Option 鍵並右鍵點按 Finder 表徵圖,選擇菜單中的“重新開啟”

 

 

   方法二:在終端裡操作   開啟終端(應用程式 – 工具 + 生產力),然後輸入以下命令並斷行符號  killall Finder  執行重新開啟命令後,Finder 會退出並重新啟動,整個案頭也會隨之更新。有時遇到的小麻煩通過重啟 Finder 就能解決,不一定要重啟系統。  Finder 和 Mac OS X 裡的其它應用一樣只是一個運行著的進程,因此你可以像退出其它應用一樣退出 Finder,將其完全關閉。關閉 Finder 後案頭就沒有表徵圖了,也不能通過 Finder 視窗瀏覽檔案了 去除TabBarItem的渲染效果(swift)//設定選中的圖片並且去除選中渲染效果    controller.tabBarItem.selectedImage = UIImage(named:selectImagePath)?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal) 

 

  //隱藏陰影線    [[UITabBar appearance] setShadowImage:[UIImage new]];- (void)setupTabBarBackgroundImage {    UIImage *image = [UIImage imageNamed:@"tab_bg"];     CGFloat top = 40; // 頂端蓋高度    CGFloat bottom = 40 ; // 底端蓋高度    CGFloat left = 100; // 左端蓋寬度    CGFloat right = 100; // 右端蓋寬度    UIEdgeInsets insets = UIEdgeInsetsMake(top, left, bottom, right);    // 指定為展開模式,伸縮後重新賦值    UIImage *TabBgImage = [image resizableImageWithCapInsets:insets resizingMode:UIImageResizingModeStretch];    self.tabBar.backgroundImage = TabBgImage;     [[UITabBar appearance] setShadowImage:[UIImage new]];    [[UITabBar appearance] setBackgroundImage:[[UIImage alloc]init]];} //自訂TabBar高度- (void)viewWillLayoutSubviews {     CGRect tabFrame = self.tabBar.frame;    tabFrame.size.height = 60;    tabFrame.origin.y = self.view.frame.size.height - 60;    self.tabBar.frame = tabFrame;}//向上拖動 導覽列隱藏 ,向下就顯示導覽列- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
   
//    NSLog(@"offset---scroll:%f",self.tableView.contentOffset.y);
   
    //scrollView已經有拖拽手勢,直接拿到scrollView的拖拽手勢
    UIPanGestureRecognizer* pan = scrollView.panGestureRecognizer;
    //擷取到拖拽的速度 >0 向下拖動 <0 向上拖動
    CGFloat velocity = [pan velocityInView:scrollView].y;
       if (velocity<-5) {        //向上拖動,隱藏導覽列
        [self.navigationController setNavigationBarHidden:true animated:true];
    }
    else if (velocity>5) {
        //向下拖動,顯示導覽列
        [self.navigationController setNavigationBarHidden:false animated:true];
    }
    else if(velocity==0){
       
        //停止拖拽
    }}   /// 設定皮膚
    private func setupAppearance() {
        let naviBar = UINavigationBar.appearance()
        naviBar.tintColor = UIColor.orangeColor()    } swift 中兩個枚舉是用數組,OC的是 枚舉1|枚舉2的形式。 列印輸出%  NSInteger count = 50;//%是一個特殊符號 如果在NSString中用到%需要如下寫法NSString *string = [NSString stringWithFormat:@"%zd%%",count];//輸出結果是: 50%NSLog(@"%@", string); 退出鍵盤1.UIView中-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    [self.view endEditing:YES];}2.tableView中用手勢(http://blog.csdn.net/kylinbl/article/details/9139473)    //增加tap手勢,點擊使退出鍵盤    UITapGestureRecognizer * tapGesture = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(dismissKeyBoard)];    [self.tableView addGestureRecognizer:tapGesture];
   //隱藏鍵盤
-(void)dismissKeyBoard{
    [self.tableView endEditing:YES];} 問題來了,因為我自訂了UITableViewCell,裡面會有一些按鈕之類的控制項,如果點到這些控制項上時,鍵盤並不會退出。查了下資料,把tap手勢的cancelsTouchesInView設定為NO:tapGesture.cancelsTouchesInView =NO;待續。。。。。。

iOS 開發中使用到的小技巧匯總

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.