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

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. javascript和jquery动态创建html元素

    1.javascript创建元素 创建select var select = document.createElement("select");        elect.opti ...

  2. sjtu1586 Dog

    Description 隔壁村的阿黑的Dog没有跑, 但Dog已经15岁了, 相当于人类达到了79岁. 为了防止Dog患上犬类认知障碍 (Canine cognitive dysfunction, C ...

  3. 用C++ 设计一个不能被继承的类

    http://blog.sina.com.cn/s/blog_69d9bff30100odlz.html 在Java 中定义了关键字final ,被final 修饰的类不能被继承.但在C++ 中没有f ...

  4. dojo自定义Widget

    使dojo AMD规范进行widget 定义,开始的时候一直找不到自己定义的widget模块的位置,经过探索,总算有收获,我这个人有毛病,脑子里不允许有一些想不通的问题,一旦有了问题,就非常难受,心里 ...

  5. Java实现人民币大写精讲

    想要实现人民币大写,在发票等场景中使用?? 1234.56显示为:壹仟贰佰叁拾肆元伍角陆分,那就往下看看吧! 本程序可以实现 0 到 9999 9999 9999.994 以内的人民币大写转换,精确到 ...

  6. hadoop面试时可能遇到的问题

    面试hadoop可能被问到的问题,你能回答出几个 ? 1.hadoop运行的原理? 2.mapreduce的原理? 3.HDFS存储的机制? 4.举一个简单的例子说明mapreduce是怎么来运行的 ...

  7. C#的同步和异步调用方法

    同步和异步大家都明白什么意思,在这里不多介绍了. namespace ConsoleTest { class Program { static void Main(string[] args) { C ...

  8. Web.config配置文件详解(新手必看)

    花了点时间整理了一下ASP.NET Web.config配置文件的基本使用方法.很适合新手参看,由于Web.config在使用很灵活,可以自定义一些节点.所以这里只介绍一些比较常用的节点. <? ...

  9. Android ViewPager多页面滑动切换以及动画效果

    一.首先,我们来看一下效果图,这是新浪微博的Tab滑动效果.我们可以手势滑动,也可以点击上面的头标进行切换.与此同方式,白色横条会移动到相应的页卡头标下.这是一个动画效果,白条是缓慢滑动过去的.好了, ...

  10. linux下安装

    挂载 1.虚拟机里选择ios文件2.挂载光驱命令: cd / mount /mnt/cdrom/ cd /mnt/cdrom/ ls 卸载 cd /umount /mnt/cdrom/ 安装 XXX. ...