iOS开发小白学习体验-3

来源:互联网 发布:深圳淘宝推广招聘 编辑:程序博客网 时间:2024/05/20 18:50

当iOS程序触发某种条件的时候,跳出提示框

/** *  参数: *  1·标题 *  2·信息 *  3·代理 *  4·取消按钮 *  5·确定按钮 */UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"通知" message:@"恭喜通关了!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];[alert show];

UI基础复习

1> UIButton -> UIControl -> UIView

1.1 设置控件的状态

启用、禁用
@property(nonatomic,getter=isEnabled) BOOL enabled;
选中、不选中
@property(nonatomic,getter=isSelected) BOOL selected;
高亮或者不高亮
@property(nonatomic,getter=isHighlighted) BOOL highlighted;

1.2 设置控件内容的布局
垂直居中方向
@property(nonatomic) UIControlContentVerticalAlignment contentVerticalAlignment;
水平居中方向
@property(nonatomic) UIControlContentHorizontalAlignment contentHorizontalAlignment;

1.3 添加/删除监听方法
- (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;
- (void)removeTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;

2> UILabel -> UIView
3> UIImageView -> UIView
4> UITextField -> UIControl

* 代理设计模式,在OC中,使用最为广泛的一种设计模式

1> 代理的用处是什么?
* 监听那些不能通过addTarget监听的事件!
* 主要用来负责在两个对象之间,发生某些事件时,来传递消息或者数据

2> 代理的实现步骤
(1) 成为(子)控件的代理,父亲(控制器)成为儿子(文本框)的代理
(2) 遵守协议->利用智能提示,快速编写代码
(3) 实现协议方法

// 将监听方法,注册到"运行循环",当按钮被点击后,"运行循环"通知视图控制器执行@selector的方法    [btn addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];

协议

协议的写法:

#import <Foundation/Foundation.h>  @protocol WithProtocol <NSObject>  //默认是必须实现的  //必须实现  @required  - (void)finshTask;  - (void)dontLate;  //可选实现  @optional  - (void)wearNeat;  @end 

协议的用法:直接让某个类遵守协议

#import "xxx.h"@interface xxx : NSObject <xxx.h>//  协议中有@optional标志的方法是可选实现的//  协议中有@required标志的方法是必须实现的@end

UIScrollView

contentSize 会根据边框调整offset
contentInset 不会调整offset
比如:

/**        1. 如果先设置间距,再设置内容,那么坐标的点是(0,64)        2. 如果先设置内容,再设置间距,那么坐标的点是(0,0)     */    self.scrollView.contentInset = UIEdgeInsetsMake(64, 0 ,0, 0);    CGFloat wight = self.scrollView.bounds.size.width;    // 下面两个函数等价    CGFloat hight = CGRectGetMaxY(self.lastButton.frame)+10;//    CGFloat hight = self.lastButton.bounds.size.height+self.lastButton.frame.origin.y;    self.scrollView.contentSize = CGSizeMake(wight, hight);    self.scrollView.bounces = YES;//    self.scrollView.contentOffset = CGPointMake(0, -64);
  • 实现大图小图的缩放:
// 加一个代理,需要遵循协议    self.scrollView.delegate = self;// 设置最大最小缩放比例    self.scrollView.maximumZoomScale = 2.0;    self.scrollView.minimumZoomScale = 0.2;...// 写一个代理方法// 告诉ScrollView要缩放的是谁,具体的缩放实现是由ScrollView来完成的 - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{    return self.imageView;}// 滚动视图即将开始缩放,通常不需要实现 - (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view{}// 完成缩放,通常不需要实现 - (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale{    NSLog(@"%s",__func__);}// 正在缩放,通常不需要实现 - (void)scrollViewDidZoom:(UIScrollView *)scrollView{    NSLog(@"%s",__func__);}

UIScrollView的属性总结

类型 属性 作用 CGPoint contentOffSet 监控目前滚动的位置 CGSize contentSize 滚动范围的大小 UIEdgeInsets contentInset 视图在scrollView中的位置 id delegate 设置协议 BOOL directionalLockEnabled 指定控件是否只能在一个方向上滚动 BOOL bounces 控制控件遇到边框是否反弹 BOOL alwaysBounceVertical 控制垂直方向遇到边框是否反弹 BOOL alwaysBounceHorizontal 控制水平方向遇到边框是否反弹 BOOL pagingEnabled 控制控件是否整页翻动 BOOL scrollEnabled 控制控件是否能滚动 BOOL showsHorizontalScrollIndicator 控制是否显示水平方向的滚动条 BOOL showsVerticalScrollIndicator 控制是否显示垂直方向的滚动条 UIEdgeInsets scrollIndicatorInsets 指定滚动条在scrollerView中的位置 UIScrollViewIndicatorStyle indicatorStyle 设定滚动条的样式 float decelerationRate 改变scrollerView的减速点位置 BOOL tracking 监控当前目标是否正在被跟踪 BOOL dragging 监控当前目标是否正在被拖拽 BOOL decelerating 监控当前目标是否正在减速 BOOL delaysContentTouches 控制视图是否延时调用开始滚动的方法 BOOL canCancelContentTouches 控制控件是否接触取消touch的事件 float minimumZoomScale 缩小的最小比例 float maximumZoomScale 放大的最大比例 float zoomScale 设置变化比例 BOOL bouncesZoom 控制缩放的时候是否会反弹 BOOL zooming 判断控件的大小是否正在改变 BOOL zoomBouncing 判断是否正在进行缩放反弹 BOOL scrollsToTop 控制控件滚动到顶部

这里把UIScrollView的几个要点总结下:

从你的手指touch屏幕开始,scrollView开始一个timer,如果:
* 150ms内如果你的手指没有任何动作,消息就会传给subView。
* 150ms内手指有明显的滑动(一个swipe动作),scrollView就会滚动,消息不会传给subView,这里就是产生问题二的原因。
* 150ms内手指没有滑动,scrollView将消息传给subView,但是之后手指开始滑动,scrollView传送touchesCancelled消息给subView,然后开始滚动。
观察下tableView的情况,你先按住一个cell,cell开始高亮,手不要放开,开始滑动,tableView开始滚动,高亮取消。
* delaysContentTouches的作用:
* 这个标志默认是YES,使用上面的150ms的timer,如果设置为NO,touch事件立即传递给subView,不会有150ms的等待。
* cancelsTouches的作用:
* 这个标准默认为YES,如果设置为NO,这消息一旦传递给subView,这scroll事件不会再发生。

UIScrollView的属性总结

  • NSTimer
    开始一个时钟
    /**     *  参数说明:     *  1· 时间间隔     *  2· 监听时钟触发的对象     *  3· 调用方法     *  4· userinfo,可以是任意对象,通常传递nil     *  5· repeat:是否重复     */[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateTimer:) userInfo:@"hello timer" repeats:YES]

停止一个时钟

- (IBAction)pause{    // 停止时钟,invalidate是唯一停止时钟的方法    // 一旦调用了 invalidate 方法,timer就无效了,如果再次启动时钟,需要重新实例化    [self.timer invalidate];}
0 0
原创粉丝点击