![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
UI
JH_1995
这个作者很懒,什么都没留下…
展开
-
UIScrollView的代理【图片缩放】
(一)UIScrollView的代理(delegate)delegate是UIScrollView内部的一个属性@property(nullable,nonatomic,weak) id<UIScrollViewDelegate>delegate; // default nil. weak reference从这里我们可以看到,UIScrollView原创 2015-12-08 20:16:26 · 494 阅读 · 0 评论 -
百思不得其姐关注模块的推荐关注中 右侧TableView刷新细节
TableView刷新细节右侧TableView的刷新细节注意更新底部刷新控件footer的状态上拉刷新时,在刷新右侧的TableView表格后,根据加载数据的情况更新底部刷新控件的状态下拉刷新时,在刷新右侧的TableView表格后,根据加载数据的情况更新底部刷新控件的状态每次点击左边的分类表格,加载右侧TableView表格数据之前,更新底部刷新控件的状态/原创 2016-05-11 20:42:02 · 685 阅读 · 0 评论 -
百思不得其姐的注意点
百思不得其姐的注意点自定义cell中如何修改cell的frame重写cell的setFrameL:方法- (void)setFrame:(CGRect)frame{ frame.origin.x += 5; frame.size.width -= 10; frame.size.height -= 1; [super setFrame:fra原创 2016-05-11 20:43:33 · 5155 阅读 · 0 评论 -
tableView性能优化cell循环利用 && 自定义cell
tableView性能优化 - cell的循环利用方式1/* * 什么时候调用:每当有一个cell进入视野范围内就会调用 */- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ // 0.重用标识 // 被st原创 2016-05-11 20:44:03 · 1099 阅读 · 0 评论 -
代理设计模式 && block设计模式 && KVC\KVO
代理设计模式代理设计模式的作用: 1.A对象监听B对象的一些行为,A成为B的代理2.B对象想告诉A对象一些事情,A成为B的代理3.B对象想告诉A对象一些事情,B中声明一个block属性代理设计模式的总结:如果你想监听别人的一些行为,那么你就要成为别人的代理如果你想告诉别人一些事情,那么就让别人成为你的代理代理设计模式的开发步骤1.拟一份协议(协议名字的格式:控件名 + D原创 2016-05-11 20:44:43 · 674 阅读 · 0 评论 -
键盘处理
键盘处理退出键盘[self.messageField resignFirstResponder][self.messageField endEditing:YES][self.view endEditing:YES]; // 推荐// 叫出键盘[self.messageField becomeFirstResponder]原创 2016-05-11 20:45:14 · 306 阅读 · 0 评论 -
程序在后台运行的注意
请求用户授权// 请求用户授权UIUserNotificationSettings *setting = [UIUserNotificationSettingssettingsForTypes:UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert categori原创 2016-05-11 20:45:56 · 428 阅读 · 0 评论 -
block的定义,赋值
block的定义block属性或变量 格式:返回值类型(^block名称)(参数列表)可以用strong修饰,也可以用copy修饰,苹果官方建议用copy @property (nonatomic, strong) void(^myBlock)(); // 无参无返回值 @property (nonatomic, strong) void(^myBlock1)(NSString原创 2016-05-11 20:45:33 · 2542 阅读 · 0 评论 -
内容模式
内容模式UIViewContentModeScaleToFill 默认的显示效果(会变形)拉伸充满整个载体UIViewContentModeScaleAspectFit (不会变形)拉伸不改变比例,充满最小的一边会按照图片的宽高比拉伸,直到图片的上下或左右和载体对齐为止,并且要求整张图片都在载体中,然后居中显示UIViewContentModeScaleAspectFill (不会变原创 2016-05-20 19:56:40 · 329 阅读 · 0 评论 -
控制器View的加载 && 创建
控制器View的加载 && 创建loadView- (void)loadView{ // 系统默认的做法, [super loadView]}自定义控制器的view的时候重写这个方法第一次使用控制器的view的时候调用在这个方法中如果没有自定义view,就不能获取控制器的view(self.view),不然会死循环第一次用到控制器的view的时候(self.view),系统原创 2016-05-20 20:04:09 · 378 阅读 · 0 评论 -
状态栏的控制
状态栏的控制在ios7以后,状态栏默认的是交给控制器控制的- (UIStatusBarStyle)preferredStatusBarStyle{ return UIStatusBarStyleLightContent;}在ios7之前状态栏是交给[UIApplication shareApplication]控制的 在窗口上新增加一个window,可能会导致状态栏不受控制器控制了原创 2016-05-20 20:06:59 · 285 阅读 · 0 评论 -
UIMenuController
UIMenuController的示例UIMenuController须知默认情况下, 有以下控件已经支持UIMenuController UITextFieldUITextViewUIWebView让其他控件也支持UIMenuController(比如UILabel)让Label成为第一响应者 作用是:告诉UIMenuController支持哪些操作, 这些操作如何处理// 这里的原创 2016-05-20 20:08:23 · 443 阅读 · 0 评论 -
UITextField && UITextView
UITextField不可以滚动.不可以换行可以显示提醒文本UITextField代码创建的时候默认是没有边框的,需要设置边框的样式borderStyle监听UITextField 的输入由于UITextField继承于UIControl,所以可以给UITextField添加Target来监听[textField addTarget:self action:@selector(tex原创 2016-05-20 20:09:32 · 398 阅读 · 0 评论 -
如何监听Tabbar的点击
如何监听Tabbar的点击如果不是自定义的Tabbar实现UITabBarController的代理方法tabBarController: didSelectViewController:, 每次Tabbar被点击了都会来到这个代理方法在这个代理方法中发送通知在需要监听Tabbar点击的控制器中监听上面发出的通知- (void)tabBarController:(UITabBarContro原创 2016-05-20 20:11:33 · 1675 阅读 · 0 评论 -
QQ聊天界面注意点
2/28杂// 退出键盘[self.messageField resignFirstResponder][self.messageField endEditing:YES][self.view endEditing:YES]; // 推荐// 叫出键盘[self.messageField becomeFirstResponder]UIKeyboardWillChan原创 2016-05-11 20:40:39 · 342 阅读 · 0 评论 -
触摸事件的传递 && 响应者链条
响应者对象什么是响应者对象继承了UIResponder的对象才能接收并处理事件。我们称之为“响应者对象”UIApplication、UIViewController、UIView都继承自UIResponder,因此它们都是响应者对象,都能够接收并处理事件UIResponderUIResponder内部提供了以下方法来处理事件触摸事件- (void)touchesBegan:(NSSet *原创 2016-01-25 21:36:55 · 505 阅读 · 0 评论 -
UIScrollView和UIPageControl的分页 && NSTimer【图片轮播器】
UIScrollView和UIPageControl的分页一、分页只要将UIScrollView的pageEnabled属性设置为YES,UIScrollView会被分割成多个独立页面,里面的内容就能进行分页展示。(根据ScrollView的规格进行分页)一般会配合UIPageControl增强分页效果。二、UIPageControl常用属性一共有多少页 @property(nonatom原创 2015-12-08 22:12:40 · 545 阅读 · 0 评论 -
UIAlertController【对话框】
UIAlertController在iOS 8中,UIAlertController在功能上是和UIAlertView以及UIActionSheet相同的,UIAlertController以一种模块化替换的方式来代替这两个类的功能和作用。最基础的对话框创建对话框视图控制器UIAlertController *alertController = [UIAlertController原创 2015-12-09 19:02:14 · 985 阅读 · 0 评论 -
模型的应用 && Xib &&代理模式的应用【应用管理】
模型模型取代字典的好处使⽤用字典的坏处 ⼀一般情况下,设置数据和取出数据都使⽤用“字符串类型的key”,编写这些key时,编译器不会有任何友善提示,需要手敲。例如: dict[@"name"] = @"Jack"; NSString *name = dict[@"name"];手敲字符串key,key容易写错 。Key如果写错了,编译器不会有任何警告和报错,造成设错数据或者取错数据。使⽤原创 2015-12-10 17:11:00 · 399 阅读 · 0 评论 -
UIScrollView的常用属性【UI界面的穿透效果】
什么是UIUIScrollView:UIScrollView是一个能够滚动的视图控件,可以用来展示大量的内容,并且可以通过滚动查看所有的内容。(一)UIScrollView的使用方法将需要展示的内容添加到UIScrollView中。设置UIScrollView的contentSize属性,告诉UIScrollView所有内容的尺寸,也就是告诉它滚动的范围。原创 2015-12-07 21:07:59 · 1609 阅读 · 0 评论 -
1.15-学习概况
1月15tableView的cell创建方式先从缓存池中,如果缓存池中没有可循环利用的cell,先去中找到合适的cell ,如果storyboard没有的话,再从我们写的代码创建偏好设置● 很多iOS应用都支持偏好设置,比如保存用户名、密码、字体⼤小等设置,iOS提供了一套标准的解决方案来为应用加入偏好设置功能 ● 每个应⽤都有个NSUserDefaults实例,通过它来存取偏原创 2016-01-15 14:19:31 · 249 阅读 · 0 评论 -
UIPickerView【随机点菜系统 && 省市联动 && 选择国旗】
UIPickerView 1. UIPickerView的常见属性数据源(用来告诉UIPickerView有多少列多少行)@property(nonatomic,assign) id dataSource;代理(用来告诉UIPickerView每1列的每1行显示什么内容,监听UIPickerView的选择)@property(nonatomic,assign)原创 2015-12-29 12:33:04 · 573 阅读 · 0 评论 -
UIDatePicker && UIToolbar【时期选择器】
常用方法和属性UIDatePicker 是一个控制器类,封装了 UIPickerView,但是他是UIControl的子类,专门用于接受日期、时间和持续时长的输入。日期选取器的各列会按照指定的风格进行自动配置,这样就让开发者不必关心如何配置表盘这样的底层操作。你也可以对其进行定制,令其使用任何范围的日期。UIDatePicker 依赖于 NSDate 类,这个类是cocoa 基础的一员,以前用于桌面原创 2015-12-29 20:08:58 · 413 阅读 · 0 评论 -
UITableView基础【数据刷新 && 模型数据中嵌套模型数据】
UITableView一、概述在iOS中,要实现表格数据展示,最常用的做法就是使用UITableView,类似于微信、QQ、新浪微博等软件基本上随处都是UITableView。UITableView继承自UIScrollView,因此支持垂直滚动,而且性能极佳。 二、基本介绍UITableView有两种风格:UITableViewStylePlain 和 UITableViewStyleGrou原创 2015-12-20 13:46:09 · 760 阅读 · 0 评论 -
手势识别
手势识别器UIGestureRecognizer为了完成手势识别,必须借助于手势识别器—-UIGestureRecognizer利用UIGestureRecognizer,能轻松识别用户在某个view上面做的一些常见手势UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为,使用它的子类才能处理具体的手势UITapGestureRecognizer // 敲击原创 2016-01-26 12:28:59 · 650 阅读 · 0 评论 -
Quartz 2D 简单应用【打水印】&&【图片裁剪】&&【屏幕截图】
打水印一、代码实现 UIImage *bgImage = [UIImage imageNamed:@"scene"]; // 上小文 : 基于位图(bitmap) , 所有的东西需要绘制到一张新的图片上去 // 1.创建一个基于位图的上下文(开启一个基于位图的上下文) // size : 新图片的尺寸 // opaque : YES : 不透原创 2016-01-11 09:52:05 · 418 阅读 · 0 评论 -
父子控制器
控制器父子关系的建立原则如果2个控制器的view是父子关系(不管是直接还是间接的父子关系),那么这2个控制器也应该为父子关系[a.view addSubview:b.view];[a addChildViewController:b];// 或者[a.view addSubview:otherView];[otherView addSubbiew.b.view];[a a原创 2016-01-30 20:28:58 · 379 阅读 · 0 评论 -
Core Animation系列之CADisplayLink
原文地址:http://blog.csdn.net/wzzvictory/article/details/22417181一、简介1、所在框架CADisplayLink和其它CoreAnimation类一样,都是在QuartzCore.framework里。2、功能CADisplayLink最主要的特征是能提供一个周期性的调用我们赋给它的selector的机制,从这点上看它很像定时器NSTimer。转载 2016-02-04 13:52:52 · 390 阅读 · 0 评论 -
2月4学习概况
## static的作用: - 修饰局部变量 * 让局部变量只初始化一次 * 局部变量在程序中只有一份内存 * 并不会改变局部变量的作用域,仅仅是改变了局部变量的生命周期(只到程序结束,这个局部变量才会销毁)修饰全局变量 全局变量的作用域仅限于当前文件原创 2016-02-04 14:00:14 · 242 阅读 · 0 评论 -
hitText方法和pointInside方法
hitText方法和pointInside方法事件传递hitText方法作用 寻找最合适view处理事件什么时候调用 当一个事件传递给一个控件的时候,控件就会调用这个方法返回谁, 谁就是最合适viewhitTest的底层实现- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{ // 1.判断下自己能否接收原创 2016-05-20 22:10:02 · 1300 阅读 · 0 评论