IOS
xiaoben_mao
这个作者很懒,什么都没留下…
展开
-
UIPickerView - 城市选择
城市数据模型#import <Foundation/Foundation.h>@interface WQProvinceData : NSObject/** 城市*/@property (nonatomic, strong) NSArray *cities;/** 城市名称*/@property (nonatomic, strong) NSString *name;+ (instance原创 2015-06-11 22:11:41 · 564 阅读 · 0 评论 -
模式 - KVO
KVO: Key Value Observing常用作用:监听模型属性值的改变- (void)viewDidLoad{ self.p1 = [[WQPerson alloc] init]; self.p1.name = @"oldName"; // 利用KVO时刻监听mainV的frame属性 // Observer:观察者 谁想监听 // KeyPath原创 2015-07-09 21:45:24 · 285 阅读 · 0 评论 -
模式 - 代理模式
监听事件也可以通过代理方法进行监听 在使用的时候可以使用对象的点语法看看有没delegate属性代理也可以用来解耦,当两个类相互引用时可以用代理解耦 id<协议>delegate,让任何遵守协议的代理都可以实现监听,实现协议方法/** * 代理设计模式的作用: * 1.A对象监听B对象的一些行为,A成为B的代理 * 2.B对象想告诉A对象一些事情,A成为B的代理原创 2015-06-30 20:20:59 · 364 阅读 · 0 评论 -
模式 - 单例(定义为宏)
所谓单例,即我们自己创建一个单例类,该类只能生成唯一的对象 创建一个WQPerson类的单例#import <Foundation/Foundation.h>@interface WQPerson : NSObject/** 姓名*/@property (nonatomic, strong) NSString *name;/** 年龄*/@property (nonatomic, ass原创 2015-07-09 21:41:00 · 322 阅读 · 0 评论 -
tableView - 常用代理方法
tableView的常用代理方法#pragma mark - <UITableViewDelegate>一般用于tableview的时间监听,比如选中和编辑/** * 选中某一行的时候调用(点击某一行) * * @param indexPath 被选中的那一行 */- (void)tableView:(UITableView *)tableView didSelectRowAtInd原创 2015-08-10 21:37:38 · 680 阅读 · 0 评论 -
tableViewCell - 常见设置
UITableViewCell的常见设置分割线颜色 分割线颜色,系统自带的分割线两边是不到屏幕边缘,当边缘有图片时更加明显,达不到所要的要求解决:可以将系统的分割线隐藏,自定义一个view,位置紧贴cell底部,设置为亮灰色,高度为1,如果太粗可以设置提高透明度 //self.tableView.separatorColor = [UIColor redColor]; // 隐藏原创 2015-08-10 21:51:27 · 891 阅读 · 0 评论 -
tableView - 编辑模式
左划删除按钮#pragma mark - UITableViewDelegate/* *只要实现这个代理方法,左划cell删除按钮就有了 *在编辑模式下:用户提交了添加(点击了添加按钮)\删除(点击了删除按钮)操作时就会调用 */- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellE原创 2015-06-22 23:49:37 · 538 阅读 · 0 评论 -
tableView- 性能优化,cell的循环利用三种方式
tableView性能优化 - cell的循环利用方式1/** * 什么时候调用:每当有一个cell进入视野范围内就会调用 */- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ // 0.重用标识 // 被static原创 2015-08-10 21:34:19 · 553 阅读 · 0 评论 -
tableView - 自定义等高cell-storyBoard方式
自定义等高cell-storyBoard方式自定义控制器类 1.创建一个继承自UITableViewController的子类,比如WQDealsTableViewController 2.实现需要的数据源和代理方法.3.实现懒加载,获取数据模型.4.创建自定义cell.#import "WQDealsTableViewController.h"#import "WQdealsData.原创 2015-08-11 23:40:05 · 444 阅读 · 0 评论 -
模式 - KVC
- KVC(Key Value Coding) - 常见作用:给模型属性赋值 /**IOS应用开发是遵循MVC设计模式的,Cocoa框架用Object Modeling的规则来规范一个Model的实现。ObjectModeling有如下几个概念的规定:Entity:表示持有数据的一个实体Property实体中的成员,分为Attribute和:RelationshipAttribute:基本类型的原创 2015-08-10 21:28:34 · 354 阅读 · 0 评论 -
tableView-自定义非等高cell(1)
非等高的cell xib自定义cellstoryboard自定义cell代码自定义cell(frame)代码自定义cell(Autolayout)自定义非等高cell-xib(1)布局内容,返回每一行的高度为固定值常规设置自定义控制器类 懒加载,面向模型开发,将字典转为模型,以后数据通过模型获得实现数据源和代理类方法#import "WQViewController.h"#imp原创 2015-08-15 01:14:09 · 575 阅读 · 0 评论 -
tableView - 自定义等高cell-xib方式
xib自定义cell1.创建一个继承自UITableViewCell的子类,比如WQDealCell2.创建一个xib文件(文件名建议跟cell的类名一样),比如WQDealCell.xib 拖拽一个UITableViewCell出来修改cell的class为XMGDealCell设置cell的重用标识往cell中添加需要用到的子控件3.在控制器中 利用registerNib…方法注原创 2015-08-15 01:03:20 · 620 阅读 · 0 评论 -
tableView-自定义非等高cell(2)
0603-9方法一: 返回每行的真实高度,创建临时cell(不能够利用缓冲池重用优化),浪费大量内存 heightForRowAtIndexPath:返回每一行的高度 此方法中调用cellForRowAtIndexPath会造成死循环(通过行号先获取cell,会先创建cell,在创建之前会先获取高度,又会调用当前方法…)cellForRowAtIndexPath:创建每一行cell前的调原创 2015-08-15 01:20:45 · 591 阅读 · 0 评论 -
模式 - 通知机制
##通知机制每一个应用程序都有一个通知中心(NSNotificationCenter)实例,专门负责协助不同对象之间的消息通信任何一个对象都可以向通知中心发布通知(NSNotification),描述自己在做什么。其他感兴趣的对象(Observer)可以申请在某个特定通知发布时(或在某个特定的对象发布通知时)收到这个通知通知(NSNotification)一个完整的通知一般包括三个属性-原创 2015-06-30 20:14:56 · 344 阅读 · 0 评论 -
tableView - 点击加载更多(通知)
0527-6tableViewHeaderHeView - tableView的tableFooterView的宽度是填充屏幕的, - 里面的子控件宽度会被拉伸,如果不想被拉伸,可以先添加view,再向view上加控件 - 一般用来显示退出登录,或者加载更多控制器中的操作- (void)viewDidLoad { [super viewDidLoad]; // 监原创 2015-06-30 20:12:10 · 462 阅读 · 0 评论 -
tableView - 批量操作
自定义选中效果增加自定义选中图片,控制其显示和隐藏在数据模型中增加bool属性,默认为NO,判断是否隐藏 不能直接对cell操作,否则在cell重用的时候会错监听didSelectRowAtIndexPath方法,然后对选中行的是否隐藏属性取反还一种思路就是可以将选中的数据模型保存在一个可变数组中进行操作(不推荐)#pragma mark - TableView代理方法- (void)原创 2015-06-22 23:59:44 · 600 阅读 · 0 评论 -
pickerVIew - 点餐,每列单独选择
typedef enum { WQFoodFruit, WQFoodMainFood, WQFoodDrink};#import "ViewController.h"// 分屏:cmd + option + return// 退出分屏:cmd + return@interface ViewController ()<UIPickerViewDelegate,UIPicke原创 2015-06-11 22:07:00 · 559 阅读 · 0 评论 -
PickeView常用
```objc#pragma mark - 数据源,以下为@required的方法// 返回pickerView有多少列- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{ NSLog(@"numberOfComponentsInPickerView"); return 3;}//原创 2015-06-11 22:05:32 · 401 阅读 · 0 评论 -
scrollView-contentOffset和UIViewAnimation动画执行
ScrollView的基本概念ScrollView是什么?移动设备的屏幕大小是极其有限的,因此直接展示在用户眼前的内容也相当有限当展示的内容较多,超出一个屏幕时,用户可通过滚动手势来查看屏幕以外的内容普通的UIView不具备滚动功能,不适合显示过多的内容UIScrollView是一个能够滚动的视图控件,可以用来展示大量的内容,并且可以通过滚动查看所有的内容 举例:手机上的“设置”Scro原创 2015-05-31 13:13:28 · 5015 阅读 · 0 评论 -
自定义view封装-用Button显示商品图片和名称
显示的商品被封装起来,只需要修改WQShopView文件即可,其余的文件不用修改#import <UIKit/UIKit.h>@class WQShopData;@interface WQShopView : UIButton@property (nonatomic, strong) WQShopData *shopData;@end#import "WQShopView.h"#impo原创 2015-05-30 19:31:48 · 456 阅读 · 0 评论 -
九宫格的计算思路
九宫格的计算思路 - 按行(row)和按列(col)显示或者排列数据 - 行和列的下标从0开始 - 行坐标:索引除以列数 - 列坐标:索引对列数取余 NSUInteger index = self.shopsView.subviews.count; NSUInteger row = index / kCol; NSUInteger col = index原创 2015-05-30 18:56:34 · 2862 阅读 · 0 评论 -
按钮内部文字(titleLabel)和图片(imageView)的位置排布方式
方式一 当一个类继承或者是UIButton类的时候可以调用以下方法对titleLabel和imageView进行位置排布- (CGRect)imageRectForContentRect:(CGRect)contentRect{ return CGRectMake(0, 0, contentRect.size.width, contentRect.size.height);}- (C原创 2015-06-17 00:17:18 · 676 阅读 · 0 评论 -
pickerView - 选择国旗,单列同时滚动
数据模型: - 在使用KVC模式时,如果字典中存储了图片名,可以直接声明UIImage属性,通过重写setter方法,直接赋值, - 好处:在给子控件赋值时,统一使用点语法#import <UIKit/UIKit.h>@interface WQFlagData : NSObject/**name*/@property (nonatomic, strong) NSString *n原创 2015-06-11 22:09:44 · 455 阅读 · 0 评论 -
UIDatePicker - 键盘处理-选择日期
#import "ViewController.h"@interface ViewController ()<UITextFieldDelegate>@property (weak, nonatomic) IBOutlet UITextField *birthdayField;@property (nonatomic, weak) UIDatePicker *datePicker;@end@imp原创 2015-06-11 22:10:55 · 411 阅读 · 0 评论 -
自定义View(加载Xib方式)
xib的使用Xib和Storyboard的对比共同点:都用来描述软件界面都用Interface Builder工具来编辑本质都是转换成代码去创建不同点Xib是轻量级的用来描述局部的UI界面Storyboard是重量级的,用来描述整个软件的多个界面,并且能够展示多个界面之间的跳转关系.Xib的加载方式:第一种(推荐使用):NSArray *views = [[NSBundle main原创 2015-05-30 20:18:19 · 2872 阅读 · 0 评论 -
懒加载
懒加载有时候使用懒加载,是在使用时候才去调用获取,是在getter方法,这时调用记得用self.成员属性(等号右侧),不要用_成员属性// 加载plist数据(比较大)// 懒加载:用到时再去加载,而且也只加载一次- (NSArray *)shops{ if (_shops == nil) { NSString *file = [[NSBundle mainBund原创 2015-05-30 19:18:20 · 337 阅读 · 0 评论 -
数据模型代替字典
数据模型代替字典使用字典的坏处: 一般情况下,设置数据和取出数据都使用“字符串类型的key”,编写这些key时,编辑器没有智能提示,需要手敲dict[@"name"] = @"Jack";NSString *name = dict[@"name"];- 手敲字符串key,key容易写错- Key如果写错了,编译器不会有任何警告和报错,造成数据的读取或者设置错误.使用模型的好处: 所谓的原创 2015-05-30 19:28:59 · 486 阅读 · 0 评论 -
.....
- (void)settingShopView:(XMGShopView *)shopView index:(NSUInteger)index{ if (self.isCircle) { CGFloat center = self.blueView.frame.size.width * 0.5; NSLog(@"centerY = %f)",cen原创 2015-05-30 19:17:19 · 252 阅读 · 0 评论 -
tableView - 自定义等高cell(frame和masonry方式)
代码自定义cell方法代码自定义cell(使用frame) 1.创建一个继承自UITableViewCell的子类,比如WQDealCell 在initWithStyle:reuseIdentifier:方法中 添加子控件设置子控件的初始化属性(比如文字颜色、字体)在layoutSubviews方法中设置子控件的frame需要提供一个模型属性,重写模型的set方法,在这个方法中设置模型原创 2015-08-15 01:04:50 · 1305 阅读 · 0 评论