大家好,又见面了,我是全栈君 滚动视图:在根视图中添加UIScrollViewDelegate协议,声明一些对象属性 @interface BoViewController : UIViewController <UIScrollViewDelegate> //滚动视图对象 @property (retain, nonatomic) UIScrollView *scrollView; //视图中小圆点 scrollView可视区域 [self.scrollView scrollRectToVisible:rect animated:YES]; } #pragma mark-----UIScrollViewDelegate --------- //实现协议UIScrollViewDelegate的方法,必须实现的 - (void)scrollViewDidEndDecelerating:(UIScrollView
二·可滑动的本质<UIScrollViewDelegate> 创建一个Super父类,并继承SPPageMenuDelegate ,UIScrollViewDelegate @interface yourFatherViewController ()<SPPageMenuDelgeate,UIScrollViewDelegate> @property (nonatomic,strong) UIScrollView *scrollView; /
property(nonatomic) UIEdgeInsets contentInset; around content //8.滚动视图的代理 @property(nonatomic,assign) id<UIScrollViewDelegate nonatomic) UIScrollViewKeyboardDismissMode keyboardDismissMode NS_AVAILABLE_IOS(7_0); @end @protocol UIScrollViewDelegate 协议 @interface 控制器 () <UIScrollViewDelegate> @end 控制器要实现UIScrollViewDelegate协议里面的代理方法 #pragma mark - <UIScrollViewDelegate> 代理方法 /** * 只要scrollView在滚动,就会调用这个方法(监听scrollView的滚动) */ - (void)scrollViewDidScroll return _beautifulView; } 代理使用的一般规律 作用:用来监听控件的某些行为 代理:是控制器对象 代理:是id类型,并且是弱指针 代理协议的格式:控件类名Delegate,比如UIScrollViewDelegate
/ MARK: - UITableViewDataSource extension MyViewController: UITableViewDataSource { } // MARK: - UIScrollViewDelegate extension MyViewController: UIScrollViewDelegate { } 2.Optional Use optional binding "if let" if let
顺着这条线,我先跑去看了 UIScrollViewDelegate 的源码: public protocol UIScrollViewDelegate : NSObjectProtocol { 思考:既然 UIScrollViewDelegate 的代理没有现成的代理回调,自己使用 KVO 去监听试试?
Paste_Image.png tableView的代理方法,默认继承了UIScrollViewDelegate @protocol UITableViewDelegate<NSObject,UIScrollViewDelegate
class ScrollViewCtrl: UIViewController, UIScrollViewDelegate { //some code override func viewDidLoad ScrollViewCtrl是一个控制器,它confirm to(遵守,大致就是其他语言中实现一个接口的意思)UIScrollViewDelegate这个protocol(协议)。
定义语法如下: @protocol KKGridViewDataSource <NSObject> @end 或者 @protocol KKGridViewDelegate <NSObject , UIScrollViewDelegate BaseType(typeof(NSObject))] interface KKGridViewDataSource { } [Model, BaseType(typeof(UIScrollViewDelegate
)) { [theTimer invalidate]; theTimer = nil; [timer invalidate]; timer = nil; } } 最后 不要忘了实现 UIScrollViewDelegate
touchesBegan 跟 touchedEnd 沒有提供給 UIScrollViewDelegate 所以要自己建立一個繼承自 UIScrollView 的 class 重寫這兩個
kHeight self.view.frame.size.height //屏幕高 创建轮播图属性,(也可以直接用UIImageView) @interface ViewController ()<UIScrollViewDelegate
原理 把UIImageView放到UIScrollView中 对UIImageView添加点击事件实现 具体代码 添加代理UIScrollViewDelegate 涉及的两个View @IBOutlet
| Delegate proxy : DelegateProxyType +-----+----> Observable<T1> | , UIScrollViewDelegate | | | Custom delegate (UIScrollViewDelegate
UIScrollView的一些常用的代理方法如下: #pragma mark - UIScrollViewDelegate //监听页面滚动,根据scrollView.contentOffset来做业务逻辑
1 import UIKit 2 3 class PageControlViewController:UIViewController, UIScrollViewDelegate { 4 5
#pragma mark -- UIScrollViewDelegate //返回需要缩放的视图控件 缩放过程中 - (UIView *)viewForZoomingInScrollView:(UIScrollView
animated: true) // 启动定时器 timerProgress.resumeTimer() } } extension ViewController: UIScrollViewDelegate
class MyRefreshView: UIView, UIScrollViewDelegate { var scrollView: UIScrollView init(frame: frame.size.height/2) layer.addSublayer(airplaneLayer) airplaneLayer.opacity = 0.0 (滑动显示更多) 这里使用UIScrollViewDelegate class { func refreshViewDidRefresh(_ refreshView: MyRefreshView) } class MyRefreshView: UIView, UIScrollViewDelegate
// // #import <UIKit/UIKit.h> @interface ImageDetailCon : UIViewController<UIScrollViewDelegate
. */ public class RxScrollViewDelegateProxy : DelegateProxy , UIScrollViewDelegate , DelegateProxyType RxScrollViewDelegateProxy中也被重写了,我们来看一下: public class RxScrollViewDelegateProxy : DelegateProxy , UIScrollViewDelegate