
知识
马玉文
iOS开发工程师
展开
-
iOS中pch文件的设置
问题一:pch文件是什么? 问题二:pch文件在开发中起到什么作用? 问题三:如何设置pch文件?原创 2017-03-21 11:17:08 · 11086 阅读 · 0 评论 -
自定义日历
最近在做项目,遇到了日历需求,于是左思右想,决定自己写一下。本文在做日历有些取巧,算不上正统的思路,希望能为你打开一片新的天地。需求 正如你所看,需要做出公历和农历,同时需要设置周六日默认橘红色,点击某个日期,出现橘色背景同时文字发生颜色变化,然后可以切换日期,这里只能逐月切换,有兴趣的朋友可以修改一下,很容易修改。1> 对于日历,这里只需要知道每个月的第一天是周几即可,后面顺序排下来,然后知道这原创 2017-09-18 20:25:04 · 796 阅读 · 0 评论 -
iOS开发实现导航栏透明度渐变效果
最近做项目实现新的需求,初始状态导航栏透明,随着滑动的过程中,改变导航栏的透明度,逐渐颜色加深。 网上找到了两种解决方案。 第一种,通过研究导航栏的结构图,找出影响背景颜色的控件,对其进行控制改变。NavigationBar背后有一张类型_UINavigationBarBackground(UIImageView的子类)的视图,所以我们设置背景的时候就是设置的_UINavigationBarB原创 2017-08-23 17:55:27 · 6332 阅读 · 0 评论 -
iOS中隐藏导航栏的方法
在实际项目中,很多时候会有这样的需求,不要显示导航栏,就是将指定页面的导航栏隐藏掉,其实实现方法很简单。 - (void)viewWillAppear:(BOOL)animated { self.navigationController.navigationBar.translucent = YES; [self.navigationController.navigationBar原创 2017-07-28 16:30:58 · 858 阅读 · 0 评论 -
iOS开发中如何在View视图中获取到该视图的控制器
在项目开发中,经常会需要一种情况,在一个view类中,点击某个按钮,需要从UINavigationController中,push到下一个页面,但是单纯的view类,并不能实现该方法,所以需要通过传递链获取到控制器来完成。还有另一种情况,就是需要实现某个代理,就必须设置为控制器,这时候也需要用到。- (UIViewController *)viewController { for (UIVi原创 2017-08-01 17:04:35 · 620 阅读 · 0 评论 -
封装星星评分视图
星星评分的核心是放置两张星星视图,一张灰色,一张黄色,灰色在下,黄色在上,默认平铺五颗灰色和黄色星星,然后从传入的评分来控制黄色星星的底部视图的宽度,而不是控制星星的样式,黄色和灰色星星从一开始到最后都没有变化,变化的只是放置星星的View的frame在变化。 RatingView.h 为外部使用该类提供一个属性,传入星星的评分,供展示使用。 @property(assign,nonatomi原创 2017-07-13 10:27:39 · 500 阅读 · 0 评论 -
iOS开发关于某页面横竖屏切换的坑
我们在使用模态视图的时候,如果需要再接下来的页面可以进行横竖屏切换,就必须注意一个大坑,我查遍了网络,各种方法用尽了,终于想到了解决方案。 需求: 当前页面必须横屏显示,不能竖屏显示,模态视图弹出页面可以进行横竖屏切换。同时,该项目同时使用导航栏和工具栏。 解决方案: 关于横竖屏切换这方面,网上相关的解决方案很多,在这里不加以描述,我主要想说的是,网上的那些解决方案不一定能解决你项目原创 2017-06-12 13:36:38 · 3010 阅读 · 1 评论 -
自定义UISegmentControl控件
平时我们在项目开发中,对于一般的需求使用系统默认的按钮组控件即可完成。但是有的时候,由于用户的需求,默认控件既不美观也不是很实用,所以这里就自己封装一个稍微美观的控件。SegmentView.h//定义block,用来传递点击的第几个按钮typedef void (^PassValueBlock)(NSInteger index);在.h文件中需要声明一个block用来传递点击按钮组原创 2017-07-12 14:19:16 · 770 阅读 · 0 评论 -
Cocoa基础模式-两阶段创建
两阶段创建两阶段创建模式将第一阶段(对象内存分配)与第二阶段(对象初始化)隔离开来。要有效的使用Cocoa必须遵从两阶段创建模式。动机 两阶段创建使程序员能在控制如何为对象分配内存的同时,为初始化实例提供了灵活性。两阶段创建在为Cocoa类创建子类的同时简化了实例初始化,并提供了简便的创建和初始化临时对象的方法。 未使用两阶段创建的缺点 在类方法中,初始化实例有很多缺点。分配和初始化合并在一起原创 2017-04-27 18:47:51 · 730 阅读 · 0 评论 -
TableViewCell定制
在项目开发中,我们并不能一直使用系统默认的tableviewcell,有时候根据需求需要作出如下效果,那么该如何做呢? 其实我们只需要在cell.m文件中复写这个方法就可以实现了,然后根据自己的需要决定上下左右的间距。- (void)setFrame:(CGRect)frame{ frame.origin.x += 5; frame.origin.y += 10; fram原创 2017-05-18 14:43:01 · 376 阅读 · 0 评论 -
UICollectionView的在导航栏作用下控制台输出错误
错误来源:我在使用网上第三方轮播图(SDCycleScrollView)发现的一个问题,报了如下错误,查询资料发现这是collectionView在使用导航栏一不小心会出现的错误。使用collectionView时报错:2017-05-17 11:12:06.532 LEACOL[9434:101112] The behavior of the UICollectionViewFlowLayout原创 2017-05-18 14:34:08 · 536 阅读 · 0 评论 -
MVC 设计模式
MVC模式介绍 一种可控制一切的模式。 将多个写作对象的大型群组划分为独立的子系统:模型,视图和控制器。 模型:为应用程序提供独特功能和信息存储。 视图:用于展示从模型中收集的信息,并为用户提供与此信息交互的方式。控制器:作用是解除模型和视图之间的耦合。小结 MVC模式可减少应用程序内部的耦合,但有时会增加复杂性。从长远角度来讲,清洗地隔离子系统能带来更多的回报,他可以减少维护原创 2017-04-14 15:50:31 · 337 阅读 · 0 评论 -
iOS进制转换
//tmpid 要转化的进制数 //length 要转化的进制长度- (void)systemTmpid:(NSInteger)tmpid withLength:(int)length { NSString *a = @""; while (tmpid) { a = [[NSString stringWithFormat:@"%ld",tmpid%2] s原创 2017-04-05 11:41:37 · 540 阅读 · 0 评论 -
高效Objective-C语法-字面量语法
NSString对象从Objective-C 1.0开始,有一种简单的方式能创建NSString对象,这就是”字符串字面量”,语法如下:NSString *str = @"hello word!";如果不用这种语法的话,就要使用常见的alloc和init来分配并初始化NSString对象。使用字面量语法能够缩短源代码长度,使其更为易读。字面数值NSNumber有时候需要将整数,浮点数,布尔变量存入O原创 2017-04-18 11:11:24 · 644 阅读 · 0 评论 -
iOS关于头文件的导入问题
关于import和@class的使用问题一.@class的出现可以适当减少编译时间,提高效率。现在假设有两个类,一个是Teacher类,一个是Students类。Teacher类#import <Foundation/Foundation.h>#import "Students.h"@interface Teacher : NSObject@property (copy,nonatomic)NSS原创 2017-04-17 19:59:33 · 1297 阅读 · 0 评论 -
iOS开发手机号正则表达式
几乎所有的项目都涉及验证手机号的格式是否正确,这就需要正则表达式来进行判断。- (BOOL)valiMobile:(NSString *)mobile{ mobile = [mobile stringByReplacingOccurrencesOfString:@" " withString:@""]; if (mobile.length != 11) {原创 2017-09-22 14:18:22 · 1011 阅读 · 0 评论