记录一下iOS开发中琐碎的点点_4
2016-07-04 00:00
405 查看
1. UIViewController的两个属性presentedViewController
和presentingViewController
他们分别是被present的控制器和正在presenting的控制器。比如说,控制器A和B,[A presentViewController B animated:YES completion:nil];那么A相对于B就是presentingViewController,B相对于A是presentedViewController,即这个时候
B.presentingViewController = A;
A.presentedViewController = B;
这两个属性还是很有用的,可以用来判断当前控制器是被present出来的还是push进来的.
2. 通过子界面实现同个控制器下界面切换
我们开发中,可能会遇到某个界面比较复杂,要进行多个界面的切换,如果把这些界面切换全都放在该界面中,控制器代码非常臃肿不说,控制起来也比较麻烦,这个时候我建议用不同的控制器来表示不同的界面,然后将这些界面通过addChildViewController添加到控制器的子控制器中,然后通过系统提供的方法进行切换,至于这种方法怎么用,大家看下官方文档就知道了。3. Masonry中的坑
注意!! 宏定义必须要放在 import 引入头文件之前!
//define this constant if you want to use Masonry without the 'mas_' prefix #define MAS_SHORTHAND //define this constant if you want to enable auto-boxing for default syntax #define MAS_SHORTHAND_GLOBALS #import "Masonry.h"
4. UINavigationBar背景透明和去底部边线
//UINavigationBar背景透明 [self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault]; //UINavigationBar去掉底部边线 [self.navigationController.navigationBar setShadowImage:[[UIImage alloc] init]];
5. UITableView取消选中效果
以前有看到过别人家的app, 点击tableview cell会跳转到两一个控制器, 当从下一个控制器返回时候, cell的选中效果会有一个渐变的取消选中的过程, 以前觉得挺好奇的,单也一直没机会研究下, 其次公司只有我一个iOSer没人交流..... 总之今天才看到, 原来就是一个属性的事情.UITableViewController有一个专门的属性用来可以控制这个, 自己来实现的话, 其实是在viewWillAppear:方法里面调用tableView的方法取消选中效果, 如下:
//两行代码的事情, so easy NSIndexPath *selectedIndexpath = [self.tableView indexPathForSelectedRow]; [self.tableView deselectRowAtIndexPath:selectedIndexpath animated:YES];
6. UIImage 调用drawInRect: 方法改变图片大小后, 图像失真问题
主要问题是, 默认是按照一倍图来绘制的, 但是在retain屏上显示就会导致失真, 解决就是, 创建UIGraphics时候, 根据屏幕的分辨率来来创建, 如下:
UIGraphicsBeginImageContextWithOptions(size, NO, [[UIScreen mainScreen] scale]);
- (UIImage *)circleImageWithWidth:(double)width { CGSize size = CGSizeMake(width, width); // 开始图形上下文 UIGraphicsBeginImageContextWithOptions(size, NO, [[UIScreen mainScreen] scale]); // 获得图形上下文 CGContextRef ctx = UIGraphicsGetCurrentContext(); // 设置一个范围 CGRect rect = CGRectMake(0, 0, width, width); // 根据一个rect创建一个椭圆 CGContextAddEllipseInRect(ctx, rect); // 裁剪 CGContextClip(ctx); // 将原照片画到图形上下文 [self drawInRect:rect]; // 从上下文上获取剪裁后的照片 UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); // 关闭上下文 UIGraphicsEndImageContext(); return newImage; }
7. CGPoint转换, 到另一个view上面
- (CGPoint)convertPoint:(CGPoint)point toView:(nullable UIView *)view; - (CGPoint)convertPoint:(CGPoint)point fromView:(nullable UIView *)view;
8. tableViewCell 选中问题
首先, 我承认这个简单的问题纠结了我好久, 今天偶然间发现了解决方案.问题是, tableViewCell默认情况下选中时候会有一个选中效果, 大概是背景灰色, 而我看到很多应用都是, 选中时候有选中的效果,然后自动的变成非选中状态, 就这么个简单的问题, 前段时间也想了很久, 想到的方法是, 点击时候选中, 然后在viewWillAppear:方法中取消选中状态, 一般情况下还是可以用的, 但是如果点击cell不需要跳转而是弹出对话框, 就有问题了, 今天发现的更好的方法就是, 在
didSelectRowAtIndexPath:方法中添加一行代码, 如下:
// 选中一行后马上取消选中 [tableView deselectRowAtIndexPath:indexPath animated:YES];
这样, cell被选中之后马上回开始执行取消选中状态的动画. 好了 完美解决!!
9. 全国主要城市, 按照字母排序
http://download.csdn.net/detail/walden00/961180210. 修改UIBarButtonItem字体大小、颜色等属性
[self.navigationItem.rightBarButtonItem setTintColor:[UIColor whiteColor]]; [self.navigationItem.rightBarButtonItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont boldSystemFontOfSize:14],NSFontAttributeName, nil] forState:UIControlStateNormal];
11. oc中 ({})的含义
12. UITextField 中, 右边, 清除文本内容的按钮
@property(nonatomic) UITextFieldViewMode clearButtonMode; // sets when the clear button shows up. default is UITextFieldViewModeNeverclearButtonMode = 1;
12. 测试代码运行速度
CGFloat codeSpeedBlock (void (^block)(void)) { mach_timebase_info_data_t info; if (mach_timebase_info(&info) != KERN_SUCCESS) return -1.0; uint64_t start = mach_absolute_time (); block (); uint64_t end = mach_absolute_time (); uint64_t elapsed = end - start; uint64_t nanos = elapsed * info.numer / info.denom; return (CGFloat)nanos / NSEC_PER_SEC; }
相关文章推荐
- iOS画板实现第二波
- iOS图层layer操作
- iOS中表单视图第三方控件——FXForms
- iOS NSURL、NSBundle获取文件,解析文件,存储文件等操作
- iOS中定位以及地图的使用
- Xamarin.iOS开发初体验
- iOS中,ARC的环境下的单例模式。
- 在iOS开发中,需要用到的多线程技术。
- 关于iOS中的手势识别
- iOS开发的22个奇葩技巧
- ios推送相关资料整理
- GCD
- iOS Foundation 基础框架
- 重定向 NSLog 输出到文件
- iOS 开发中的各种证书
- iOS 使用Charts框架 折线,柱状,K线,饼状,雷达全攻略
- 欢迎使用CSDN-markdown编辑器
- 如何进入BIOS
- runtime(三)应用 消息转发
- 在FireMonkey iOS应用程序中使用ListBox组件来显示TableView