国庆即将来到,一个小项目也即将完成,把自己在项目中用的一些小技巧写出来,方便查找。

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];
}
    //增加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 开发中使用到的小技巧汇总的更多相关文章

  1. Salesforce 开发整理(九) 开发中使用的一些小技巧汇总[持续更新]

    1.查询一个对象下所有字段 当需要查询一个对象所有字段进行复制或其他操作,可以使用一段拼接的语句来查询 String query = 'select '; for(String fieldApi : ...

  2. iOS开发UI篇—IOS开发中Xcode的一些使用技巧

    iOS开发UI篇—IOS开发中Xcode的一些使用技巧 一.快捷键的使用 经常用到的快捷键如下: 新建 shift + cmd + n     新建项目 cmd + n             新建文 ...

  3. iOS开发之软键盘使用小技巧

    在iOS开发过程中,有时候须要弹出软键盘进行输入,有时候又须要在某些情况下隐藏软键盘,以提高用户体验. 今天有几个关于软键盘的小技巧和大家分享. (1)仅仅弹出数字键盘 有某些需求中,要求用户仅仅能在 ...

  4. iOS开发常见BUG和一些小技巧(ps:耐心看完,很实用)

    [385][scrollView不接受点击事件,是因为事件传递失败] // // MyScrollView.m // Created by beyond on 15/6/6. // Copyright ...

  5. IOS开发之代理的设计小技巧

    1.关于代理对象的设计小技巧 在设计一个类,需要通过代理和协议来从外部获取需要的动态的数据.那么在这里设计使用代理会有两种方法. <第一种方法> 也是比较常见的: 在你设计的类中,声明一个 ...

  6. Xcode开发中的6个小技巧

    Xcode是iPhone和iPad开发者用来编码或者开发iOS app的IDE.Xcode有很多小巧但很有用的功能,很多时候我们可能没有注意到它们,也或者我们没有在合适的水平使用这些功能简化我们的iO ...

  7. iOS开发使用Xcode的一些小技巧

    1.打开iOS项目 如果你当前目录下既有project又有workspace,你可以在终端使用命令“xed.”自动打开workspace,如果只有project,它会自动打开project. 2.清理 ...

  8. iOS开发中视图相关的小笔记:push、modal、popover、replace、custom

    在storyboard中,segue有几种不同的类型,在iphone和ipad的开发中,segue的类型是不同的. 在iphone中,segue有:push,modal,和custom三种不同的类型, ...

  9. VS开发中的代码编写小技巧——避免重复代码编写的几种方法

    上一篇文章中程序员的幸福生活--有你的日子,每天都是情人节,收到了大家的很多好评.鼓励和祝福,非常感动,真诚的谢谢大家.也希望每个朋友都能保持一个积极向上的心态,去迎接丰富多彩的人生. 在开发过程中, ...

随机推荐

  1. Maven仓库详解

    转载自:Maven入门指南④:仓库   1 . 仓库简介 没有 Maven 时,项目用到的 .jar 文件通常需要拷贝到 /lib 目录,项目多了,拷贝的文件副本就多了,占用磁盘空间,且难于管理.Ma ...

  2. Ubuntu安装提示Permission Denied

    我用wubi安装ubuntu 显示 permission denied 并要查看日志文件 怎么办啊? 你好,你把你的ISO放到你的Wubi目录下面,也就是把镜像放到你解压好的文件夹里面就可以了呢!! ...

  3. codeforces 388B Fox and Minimal path

    这个题目的突破口就是固定最短长度,然后以二进制的形式分层: 最后把需要的曾连起来: #include<cstdio> #include<cstring> #define max ...

  4. Linux 系统挂载数据盘

    适用系统:Linux(Redhat , CentOS,Debian,Ubuntu) *  Linux的云服务器数据盘未做分区和格式化,可以根据以下步骤进行分区以及格式化操作. 下面的操作将会把数据盘划 ...

  5. Linux(CentOS)常用命令

    http://fedoranews.org/alex/tutorial/rpm/3.shtml rpm.org rpm -qa|grep mysql 查询已安装的含有mysql的包. mv 移动文件. ...

  6. QT中的字符串处理函数

    Fn 1 : arg 这个函数的具体声明不写了,它有20个重载,典型的示例代码如下: 1: #include <QtCore/QCoreApplication> 2: #include & ...

  7. 插入排序InsertionSort

    /** * * @author Administrator * 功能:插入排序法 */ package com.test1; import java.util.Calendar; public cla ...

  8. Altium快捷键

    M快捷键 PCB快捷键 编辑 视图

  9. POJ 1321 棋盘问题(DFS & 状压DP)

    用DFS写当然很简单了,8!的复杂度,16MS搞定. 在Discuss里看到有同学用状态压缩DP来写,就学习了一下,果然很精妙呀. 状态转移分两种,当前行不加棋子,和加棋子.dp[i][j]中,i代表 ...

  10. 从头开始编写一个Orchard网上商店模块(3) - 创建Orchard.Webshop模块项目

    原文地址:http://skywalkersoftwaredevelopment.net/blog/writing-an-orchard-webshop-module-from-scratch-par ...