UI
文章平均质量分 81
yxcharles
just do IT
展开
-
block
As a local variable:returnType (^blockName)(parameterTypes) = ^returnType(parameters) {...};As a property:@property (nonatomic, copy) returnType (^blockName)(parameterTypes);As a method paramete原创 2015-08-28 19:54:24 · 281 阅读 · 0 评论 -
UIApplicationMain
return UIApplicationMain(argc, argv, nil,NSStringFromClass([AppDelegate class])); //This function is called in the main entry point to create the application object and the applicati原创 2015-08-13 18:33:01 · 470 阅读 · 0 评论 -
qq好友列表 模拟
1. 最近好累 2. 很想念一个人 3. 开始整理qq好友列表 数据模型从plist文件中读取。plist文件较为复杂数组中 一个有12个字典 ,即分组,每个分组有一个朋友数组 又由好多字典组成。 所以我们确定,分组是一个数据模型类,而朋友也是一个数据模型类1.分组数据模型类/**类方法用来创建model对象*/+ (id)groupModelWit原创 2015-08-17 21:22:01 · 847 阅读 · 0 评论 -
通知
// 先订阅通知 ,才能收到通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeColor:) name:@"ChangeColor" object:nil];// 思路当某个控制器发出一个通知,别的视图控制器如果想要接收这个通知,就要先订阅这个通知,订阅原创 2015-08-18 20:32:49 · 336 阅读 · 0 评论 -
导航控制器和分栏控制器小结1
1. 关于导航控制器的一点思考。导航条为什么导航控制器可以管理这么多的视图控制器?也没有看到任何的add或者其他的拥有视图控制器对象所有权的操作: 当导航控制器push或者initWithRootViewController时,导航控制器中存放视图控制器的数组就会执行add操作,这就是我们为什么要理解好Foundation框架中数组的原因当数组中add一个对原创 2015-08-20 22:13:02 · 1297 阅读 · 0 评论 -
理解导航控制器
// 当window将导航控制器作为根视图控制器的时候// 1. window — > 导航控制器view// 2. window - > 导航控制器导航条view// 3. // UIView *view = viewController.view;// [self.window addSubview:view];// 小结系统导航控制器的实现机理//@原创 2015-08-19 13:21:39 · 586 阅读 · 0 评论 -
GDataXMLNode
// 加载xml数据- (void)loadXML { // 获得数据 NSString *path = [[NSBundle mainBundle] pathForResource:@"book" ofType:@"xml"]; NSData *xmlData = [[NSData alloc] initWithContentsOfFile:path];// N原创 2015-08-18 20:42:42 · 277 阅读 · 0 评论 -
UITableView的封装和类的交互2
UI总结之UITableView的封装和类的交互1中实现了简单的滚动视图的封装和类的交互,接下来就是封装表视图的过程了,我们可以从创建一个nib文件来创建一个容器视图。其实我们逻辑的搭建是由小到大,笼统来说就是我们先封装了滚动视图,然后再封装表视图,将滚动视图加到表视图中!@interface YXContentView () @property (weak, nonatomic) IBOu原创 2015-08-15 19:56:22 · 301 阅读 · 0 评论 -
UITableView的封装和类的交互1
思路: 如果我们的需求需要多个表视图来实现,那么我们如果将表视图的实现放在控制器中,那么这样代码的动态性将会降低,并且如果有多个表视图在同一个控制器,那么代码将会出现很多垃圾代码(也就是说功能实现,逻辑条理一团乱麻) 这种情况下,可以封装表视图,然后控制器需要做的事情只是给表视图数据并且将表视图添加到自己的根视图。// 1. 首先我们需要创建一个容器视图 来装载tableView并且来实现ta原创 2015-08-15 19:43:29 · 354 阅读 · 0 评论 -
UITableView之上拉刷新
分析 表视图上拉刷新的思路1.当上拉刷新的时候,底部那个显示刷新样式的是什么东西?<1.会不会是tableFooterView ? 不会,因为tableFooterView是表视图的内容。 如果用tableFooterView的话,我们怎么完成反弹加载数据的效果?<2.封装视图? 必须要自己封装一个视图,并且因为刷新视图有图有label,用button就好2.怎么封装呢?刷新一共三原创 2015-08-17 20:53:52 · 380 阅读 · 0 评论 -
底部导航栏封装
1.将需要显示的视图封装到一个容器视图中,然后在容器视图中填充内容,传递事件。2. 控制器负责得到数据,传递给视图让其显示3. 数据被封装为数据模型类底部导航栏封装我们先要明白的是 视图的层次逻辑关系还有思路。1.底部导航栏是需要封装的,而且其中的视图需要能接收点击事件,来完成切换界面2.当切换界面时,我们是否需要将视图的层次调整来达到导航栏一直在最上层的目的3.多个界面的UI逻辑类原创 2015-08-17 20:40:17 · 821 阅读 · 0 评论 -
UIScrollView - 点击跳转
#define Screen_Width [[UIScreen mainScreen] bounds].size.width#define Screen_Height [[UIScreen mainScreen] bounds].size.height@implementation ViewController { UILabel *_indexLabel; UISc原创 2015-08-10 10:14:58 · 1034 阅读 · 0 评论 -
自定义layout实现瀑布流_UICollectionView
控制器中:@interface ViewController () @property (nonatomic,strong) UICollectionView *collectionView;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; Water原创 2015-08-31 08:47:31 · 494 阅读 · 0 评论 -
UILabel
- (void)viewDidLoad { [super viewDidLoad]; #if 0 // 标签控件 UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 30, 300, 300)]; label.backgroundColor = [UIColor lightG原创 2015-08-09 11:39:05 · 230 阅读 · 0 评论 -
UIButton
- (void)viewDidLoad { [super viewDidLoad]; /** * 设计模式 :抽象工厂 -> 工厂模式 */ // UIButton : UIControl: UIView :UIResponder :NSObject // UIControl -> UIView带点击事件 按钮有一定的容错率原创 2015-08-10 08:27:44 · 280 阅读 · 0 评论 -
UIWindow
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { _window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];原创 2015-08-09 11:33:31 · 211 阅读 · 0 评论 -
自定义导航条1
自定义导航条的前提是隐藏系统自带的导航条创建自定义的导航条视图,当前控制器将需要添加的东西告知自定义导航条视图,然后导航条视图去创建。当前视图控制器做的事情初始化需要添加到自定义导航条视图的对象 // 设置状态栏的风格 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightCo原创 2015-08-10 10:08:13 · 386 阅读 · 0 评论 -
UIScrollView
- (void)viewDidLoad { [super viewDidLoad]; // 滚动视图 UIScrollView - > UIView UIScrollView *scrollView = [[UIScrollView alloc] init]; // 精确计算 scrollView.frame = CGRec原创 2015-08-10 10:10:34 · 286 阅读 · 0 评论 -
UITextView
- (void)viewDidLoad { [super viewDidLoad]; // 可以输入多行 UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(10, 30, 300, 100)]; textView.backgroundColor = [UIColor lig原创 2015-08-10 08:31:44 · 235 阅读 · 0 评论 -
UITextField
// 文本输入框 UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(10, 440, 300, 30)]; textField.tag = 101; // 设置边框风格 textField.borderStyle = UITextBorderStyleLine; //原创 2015-08-09 11:44:15 · 235 阅读 · 0 评论 -
UITableView2 - 复用的理解和cell的创建
+ (id)customCell { //对于频繁加载的xib文件,不要使用loadNibName /* // 1. return [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class]) owner:nil原创 2015-08-15 18:51:16 · 426 阅读 · 0 评论 -
关于复用的理解
关于单元格cell的复用机制/** cell 的复用机制 看到多少行cell 就会实例化多少个cell对象 tableView复用池 每个tableView的复用池是独立的 *//** 1. 不是有多少行就有多少个cell对象 2. 每一行中都有一个cell对象 3. 当某一行移动出屏幕时,会将行中的cell放tableViewCell复用池中,而不是直接原创 2015-08-15 17:11:28 · 862 阅读 · 0 评论 -
UITableView不同样式cell的封装
1. 每个cell的数据不是一样的。2.所以每个cell的数据模型是不同的。3.数据模型有的属性是相同的,所以可以将数据模型抽象出来,有一个父类,然后每个子类有特有的属性4.cell样式是不同的,所以我们需要用nib文件来创建和封装cell5.使用工厂模式,控制器分配任务定制不同样式的cell,还有定义不同的数据模型。+ (id)newsWithDict:(NSDictionary *)原创 2015-08-18 20:53:15 · 1391 阅读 · 0 评论 -
使用工厂创建cell和模型
1. 为什么要使用工厂模式?2. 什么时候使用工厂模式?3. 怎么使用工厂模式?工厂模式其实就是面向对象编程思想中 现实工厂的抽象,控制器给工厂某些属性 工厂则会给控制器创建出某些类。1. 工厂创建cell 当只有一个类型的cell的时候,我们完全没有必要使用工厂模式。如果你只单纯的想使用工厂来创建cell的话当有很多种类型的cell,我们设置cell有独特的特征或内容,我们可以原创 2015-08-26 13:17:29 · 1009 阅读 · 0 评论 -
UIButton2
UIButton的内容复杂又多变1. 文本// 关于设置标题颜色和文本- (void)test7 { UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; [self.view addSubview:btn]; btn.frame = CGRectMake(0, 0, 200, 200);原创 2015-08-23 12:46:39 · 303 阅读 · 0 评论 -
单例模式1
// 单例模式:可以保证在程序运行过程中,一个类只有一个示例 (一个对象)/** * 单例模式 Singleton 的作用 // 不可以用dispatch_once因为用完一次之后,就不会在调用 */// 懒汉式static id _musicTool;/** * 设置为static的原因 这个全局变量,不设置原创 2015-08-12 08:54:19 · 325 阅读 · 0 评论 -
UIButton3
// 内容偏移- (void)test9 { UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; button.frame = CGRectMake(100, 100, 200, 200); // button.backgroundColor = [UIColor redColor];原创 2015-08-23 13:12:41 · 305 阅读 · 0 评论 -
UI总结之cell之手势滑动
// 1. UIViewController#import "ViewController.h"#import "CustomCell.h"@interface ViewController () @property (weak, nonatomic) IBOutlet UITableView *tableView;@property (nonatomic, strong) NSM原创 2015-09-28 20:39:53 · 820 阅读 · 0 评论 -
UI总结之UIViewController 和 UIView关系
关于UIViewController和UIView、UIWindow的一点认知,在这里不说明视图控制器的使用和视图的使用这些都是自己对于视图控制器和视图还有窗口的一点认知,我觉得要想了解好学好一些东西,首先得懂它是干嘛的,然后才能深入的理解它,都是手写文字,如果有错误,请谅解,也请指出。UIViewController是MVC中的控制器对象,UIView是MVC中的视图对象原创 2015-05-26 14:18:57 · 1127 阅读 · 0 评论 -
UI之UIScrollView实现循环滚动视图
1.创建三个UIImageView,用来当做图片的载体。将三个UIImageView添加到UIScrollView上。初始化的时候是加载三个UIImageView。2.滚动后,获取当前索引。 当滑动的时候,首先判断是左翻还是右翻,在滚动视图的代理方法中,如果向左翻,则判断是不是数组中第一张图片(临界点),更新当前图片的索引 向右翻同理3.滚动后,更新三个载体中的图片。在加载图片视图的方法原创 2015-08-10 10:34:02 · 598 阅读 · 0 评论 -
UITableView
基本属性 // 表单控件 UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 480) style:UITableViewStylePlain]; tableView.delegate = self; tableView.dataSource = self原创 2015-08-18 20:35:24 · 231 阅读 · 0 评论 -
M—V—C
#import "YXModels.h"@implementation YXModels+ (id)modelsWithDict:(NSDictionary *)dict { // 我们一般使用类方法创建一个数据模型类,参数是控制器取到的数据,因为我们需要将这些数据装化或封装为数据模型 // 一般情况下,在控制器中取到数据,例如如果是表视图的话,表视图的数据源将会保存这些模原创 2015-08-15 19:00:01 · 741 阅读 · 0 评论 -
UIView的类别实现之设置frame
设置frame是一件很头痛的事情,多个视图的话,需要写大量的self.frame.size.width类似的代码。我们写一个UIView的类别,来方便我们以后代码简化。#import @interface UIView (Frame)@property (nonatomic,assign) CGFloat x;@property (nonatomic,assign) CGFloat原创 2015-08-15 20:01:13 · 374 阅读 · 0 评论 -
单例模式2-GCD实现单例模式
// be used to save singlton objectstatic id _instance;+ (id)allocWithZone:(struct _NSZone *)zone { /* if (_instance == nil) { @synchronized (self) { if (_insta原创 2015-08-13 13:50:53 · 364 阅读 · 0 评论 -
单例模式3-宏和MRC的严谨
@interface GPDataTool : NSObject在.h可以这样声明方法CharlesSingletonH(DataTool)@implementation GPDataTool在.m可以这样实现方法CharlesSingletonM(DataTool)宏的实现是死的,但是宏的名字可以去修改。在PCH文件中,#define CharlesSingletonH(n原创 2015-08-13 13:59:17 · 311 阅读 · 0 评论 -
三个滚动视图连用
- (void)viewDidLoad { [super viewDidLoad]; NSArray *colors = @[[UIColor lightGrayColor],[UIColor whiteColor],[UIColor grayColor]]; for (int i = 0; i < 3; i++) { UIScrollView *scrol原创 2015-08-10 10:36:14 · 328 阅读 · 0 评论 -
UITableView的重用和注册机制
最近学东西也没有整理,所以搞的之前的有些东西似懂非懂。 这几天还是多整理,多回顾,争取一个东西研究透彻了,然后再研究下一个东西。关于UITableView的重用和注册机制1. 这是我们最常见的代码 static NSString *identifier = @"identifier"; UITableViewCell *cell = [tableView dequeueRe原创 2015-08-26 13:07:09 · 805 阅读 · 0 评论 -
UIView基础
//UIView - 视图 基础单元 UI的基类 UIView: UIResponder : NSObject 继承关系 // 1. 位置和大小 2. 加载在父视图中 // 320 x 480 px 状态栏 20px iphone4s #if 0 // blue UIView *view1 = [[UIView alloc] init]; // 默认透原创 2015-08-09 11:31:38 · 275 阅读 · 0 评论 -
UIImageView和UIImage
- (void)viewDidLoad { [super viewDidLoad]; // 想要加载一张图片,UIImgae 和 UIImage 的一个载体 UIImageView // 1.初始化UIImage对象 //iamgeNamed: 会认为是一个png。不用写后缀名 UIImage *image1 = [UIImage i原创 2015-08-09 11:46:10 · 350 阅读 · 0 评论 -
UIViewController
// 系统要进行初始化- (void)loadView { [super loadView]; NSLog(@"%s",__func__);}// 进一步初始化界面- (void)viewDidLoad { NSLog(@"%s",__func__); [super viewDidLoad]; self.view.backgroundCol原创 2015-08-10 08:33:59 · 239 阅读 · 0 评论