/blog_63aaf4690100w981.html 中文字符ASCII码和NSString相互转换 http://www.2cto.com/kf/201309/243443.html 6 【UI】UIButton...文字居左显示 UIButton *btn = [[UIButton alloc] init]; btn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft...=NO,所以用户点击操作在该控件即被截停了,无法往子控件中传递,故需要开启userInteractionEnabled属性为true,以使事件往下传递。...)]; _scrollView.delegate = self; // scrollView.userInteractionEnabled = YES; [self.view addSubview...*singleTap1 = [[UITapGestureRecognizer alloc] initWithTarget: self action: @selector(myScoreButtonClicked
*singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapDetected)]; singleTap.numberOfTapsRequired...、调用这个方法的view2、view2的所有子view都会调用layoutSubviews setFrame:只有在view设置frame且尺寸参数有不同的情况下调用 滑动UIScrollView时,scrollView...UIControlEventTouchUpInside]; ---- UIImage & UIImageView 用纯色生成一个UIImage reference @implementation UIButton...setContentOffset: CGPointMake(0, -self.scrollView.contentInset.top) animated:YES]; //ORIGINAL [self.scrollView...reference 继承UITableViewController重写 - (void)viewWillAppear:(BOOL)animated { //不调用super方法 屏蔽自动滚动
resultLab.font = [UIFont systemFontOfSize:25]; _resultLab.userInteractionEnabled = YES; UITapGestureRecognizer...*tag = [[UITapGestureRecognizer alloc] init]; tag.numberOfTapsRequired = 1; [tag addTarget...()); self.title = @"我的账本"; [self.view addSubview:self.scrollView]; } - (void)didReceiveMemoryWarning...,我们可以优化一下,将数据库操作全部放到一个类中,这样代码逻辑会更清晰一点,可读性更强。...所以上面的代码都包括冗长的coreData操作 创建一个 数据库操作的单例 #import #import
具体实现就是scrollView。...=UIScrollView(frame: .zero) scrollView.showsVerticalScrollIndicator = false; scrollView.showsHorizontalScrollIndicator...= false; scrollView.alwaysBounceHorizontal=true; return scrollView }() override init...itemStackView.spacing=2.0; itemStackView.tag= index +100; let tapGesture =UITapGestureRecognizer...itemStackView.addGestureRecognizer(tapGesture); stackView.addArrangedSubview(itemStackView); let menuBtn =UIButton
一:简介 在有支付相关的APP中,都有对应的钱包,虽然现在的支付宝,微信支付很流行,但是都是需要绑定自己的银行卡,那么这个银行卡的卡包页面该怎么实现呢?...calculateLayoutValues() } get { return scrollView.contentInset }...(addCardButton:UIButton) { walletView.insert(cardView: ColoredCardView(), animated: true, presented...// 删除按钮 @objc var removeCardViewButton: UIButton!...let tapGestureRecognizer = UITapGestureRecognizer() public let panGestureRecognizer = UIPanGestureRecognizer
最常用的是 UIKit Category,它为 UIAlertView,UIActionSheet,UIButton,UITapGestureRecognizer 等提供了 blocks。...和 UITapGestureRecognizer 用法示例: UIButton *button = [[UIButton alloc] init]; [button bk_addEventHandler...= [UITapGestureRecognizer bk_recognizerWithHandler:^(UIGestureRecognizer *sender, UIGestureRecognizerState...delay) { block(); return; } ... } delegate 转换成 block 实际上使用了消息转发机制,是 BlocksKit...原理分析: 消息转发机制 当一个对象收到它没实现的消息的时候,通常会发生如下的情况。
,包括我们的选择器的标题,取消、确定按钮,蒙层等大框架的布局,然后是子类在基类的基础上添加UIPickerView来实现选择器的基本功能以及数据加载和显示。...,具体的效果在子类中重写 /** 点击背景遮罩图层事件 */ - (void)didTapBackgroundView:(UITapGestureRecognizer *)sender; /** 取消按钮的点击事件...,具体效果在子类中进行重写来控制。...,那么我们为什么不直接在蒙层上添加弹出式图呢?...,该方法主要是让使用者提供选择器的标题、最小日期、日期选择完成后的操作等基本信息,方便我们对选择器的数据和操作进行设置。
方案就是为UITapGestureRecognizer追加一个“属性”,利用runtime新建一个UITapGestureRecognizer的分类即可。...[self requestCallConSetWithPartnerCode:tap.dataStr]; } 如此一来,响应事件的方法就可以根据事件激活方携带过来的信息进行下一步操作了,比如根据它携带过来的某个参数进行网络请求等等...3.2 UIButton 除了上述的UIAlertView,这节以UIButton为例,使用关联对象完成一个功能函数:为UIButton增加一个分类,定义一个方法,使用block去实现button的点击回调...typedef void(^ButtonClickCallBack)(UIButton *button); @interface UIButton (Handle) // 为UIButton增加的回调方法...判断是否存在关联对象,如果存在,直接返回 /** 1> 关联到的对象 2> 关联的属性 key 提示:在 OC 中,类本质上也是一个对象 */
但是这里注意一下 [self.nextResponder touchesEnded:touches withEvent:event];这句话的意思是将UIScrollView上的单击事件往下传递,传递到它的父...这样如果父UIView上实现了touchesEnded这个方法,也会响应到。但是这样的写法经过测试在IOS5.0以前的版本可以。但IOS5以后的(包括5)这不能往下传递,这里我也不知道为什么。... ended"); } -(void)scrollViewTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event whichView:(id)scrollView...{ NSLog(@"scrollView touch ended"); } 功能完成,记得在ViewController.h上加上UIScrollViewTouchesDelegate...本来我想用UITapGestureRecognizer来实现的,但是直接引发异常。不明白为什么UITapGestureRecognizer不能注册在UIScrollViews上。
引言 在项目开发中,会对数据库数据进行更新操作的接口请求,不仅服务器侧需要控制请求频率以及保证数据的唯一性和一致性,app侧也需要进行限制来避免产生垃圾数据 常用的方案有: 限制按钮的点击频率: 针对注册类接口的时间间隔...SEL selA = @selector(sendAction:to:forEvent:); 如果按钮的事件处理采用添加UITapGestureRecognizer 手势的实现的,...同理也是可以类似地进行Method Swizzling实现响应频率的限制 UITapGestureRecognizer *cutTap = [[UITapGestureRecognizer...,你可以选择自定义控件的方式进行实现 头文件 #import #define defaultInterval .2 //默认时间间隔 @interface UIButton...resetState) withObject:nil afterDelay:self.timeInterval]; } } //此处 methodA和methodB方法IMP互换了,实际上执行
5.UIButton文本竖着排列 ? 你可能找不到这样的设置,但是可以这样简单的实现。...WWSideslipViewController是一个VC,在WWSideslipViewController的View上依次放上如下子视图: - 星空背景ImageView; - LeftVC的View...点击.gif actionTap 是cell中的图片上加的手势事件。...-(void)actionTap:(UITapGestureRecognizer *)sender{ CGPoint location = [sender locationInView...,如果把cell中的UIImageView换成UIbutton就很简单了,很容易找到那个image,可是那样的话需要点击进去才能触发事件,而不是轻击。
无奈,又尝试着在View视图上添加一个landBGView,来承载我想要显示的landKindView。 设置 landBGView 为控制器的View的尺寸,然会添加,到控制器的VIew上。...然后在landBGView上添加手势,但是仍旧是没有反应,郁闷至极。。。 今天再次尝试了一下,居然就可以了(可能是自己修改了某些东西)。...重写set方法来实现某些代码的简化, 主要是操作View的显示与隐藏(或者是刷新操作,网络请求之类的均可),主要是为了操作方便,集中处理细节问题 具体如下: //某按钮的 控制显示子View - (void...self.categoryIsShowing ; } // 重写set方法 - (void)setCategoryIsShowing:(BOOL)categoryIsShowing { if...UIColor lightGrayColor]; [self.landBGViewaddSubview:self.landKindView]; UITapGestureRecognizer
上的buttons while (self.scrollView.subviews.count) { [self.scrollView.subviews.lastObject removeFromSuperview...addSubview:self.line]; //设置默认选中的按钮 UIButton *btn = [self.scrollView viewWithTag:_currentIndex +...= 0) { UIButton *formerBtn = [self.scrollView viewWithTag:btn.tag - 1]; [self.scrollView...; } } } #pragma mark -- left button的点击方法 - (void)clickButton:(UIButton *)sender { //如果点击的是当前选中的按钮...); [self.scrollView layoutIfNeeded]; UIButton *btn = [self.scrollView viewWithTag:_currentIndex +
- (IBAction)sliderClick:(UITapGestureRecognizer *)sender { // 1.获取点击到的点 CGPoint point = [sender...歌词的处理 创建存放歌词的tableView 当滑动歌手图片时,会来到歌词界面,这里往歌手图片和歌词label上面覆盖scrollView,设置scrollView的contentSize为两个屏幕的宽度...歌词tableView布局 使用storyboard添加scrollView并自定义scrollView为CLLrcView,使用代码添加tableView,在scrollView的initWithFrame...scrollView滑动歌手图片逐渐消失处理 当向右滑动出现歌词时,歌手图片和歌词label是逐渐消失的,我们通过scrollView的代理监听scrollView的滑动,根据scrollView.contentOffset.x...播放进度 = (当前播放的时间 - 正在唱的歌词的开始时间)/ 当前唱的歌词需要的总时间。
ScollView本身不处理这个消息,全部交给子视图处理 @property(nonatomic) BOOL canCancelContentTouches; //28.自定义默认行为,当手指触摸在显示的内容由子类重写...//35.一个布尔值,决定当当缩放超过上限或是下限时是否滚动视图推动内容缩放 @property(nonatomic) BOOL bouncesZoom; //36.一个布尔值 指示内容是否认为正在方法或者缩小...正在滚动的时候调用 - (void)scrollViewDidScroll:(UIScrollView *)scrollView; //43.scrollView正在被拖动的时候调用 - (void...UIControlEventTouchUpInside : 点击事件(UIButton) UIControlEventValueChanged : 值改变事件(UISwitch、UISegmentControl...:NSRunLoopCommonModes // 主线程不管在处理什么操作,都会抽时间处理NSTimer [[NSRunLoop mainRunLoop] addTimer:self.timer forMode
SDWebImage是iOS开发者最常用的第三方框架之一,用于异步下载网络图片,缓存图片,Github源码地址 一、架构 sd_setImageWithURL:UIimageView/UIButton...set Image:设置图片 二、解析 1、sd_setImageWithURL: UIButton和UIImageView都有WebCache的Category用来设置网络图片,以UIimageView...scrollview减速的时候,才会开始下载(也就是你滑动的时候scrollview不下载,你手从屏幕上移走,scrollview开始减速的时候才会开始下载图片 SDWebImageCacheMemoryOnly...,图片会更新时使用 SDWebImageContinueInBackground = 1 « 5,:启动后台下载,加入你进入一个页面,有一张图片正在下载这时候你让app进入后台,图片还是会继续下载(这个估计要开...2、sd_internalSetImageWithURL: 在这里,将UIButton和UIImageView的下载统一为UIView的WebCache Category 其中 dispatch_main_async_safe
视频播放器布局 首先使用xib创建CLAVPlayerView继承UIView用来承载播放器,这样我们在外部使用的时候,直接在控制器View或者Cell上添加CLAVPlayerView即可,至于播放器播放或者暂停等操作交给...CLAVPlayerView上的,要注意他们的层次关系,避免相互遮挡。...工具条的显示与隐藏 在播放状态时,当点击imageView,就会弹出底部工具条,可以查看当前播放的时间,视频总时间或进行暂停视频、全屏播放等操作。如果没有操作,工具栏会在5秒之后自动隐藏。...按下时移除定时器,拖动时根据拖动的值即时的计算当前播放时间并显示在label上,松开时计算当前播放时间,并跳转到当前播放时间进行播放。...,因此我们提供urlString属性用来接收视频的资源,然后通过重写其set方法来播放视频 /** 需要播放的视频资源set方法 */ -(void)setUrlString:(NSString *)urlString
一、概念介绍 UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为,使用它的子类才能处理具体的手势 UITapGestureRecognizer(轻触,点按) UILongPressGestureRecognizer...NSUInteger)touchIndex inView:(nullable UIView*)view; ---- 四、UIGestureRecognizerDelegate 代理方法 处理一些同时进行的手势操作...和UIButton的点击事件冲突的解决办法 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch...*tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)]; // 设置能识别到手势的最少的轻触次数...- (void)rotateAction:(UIRotationGestureRecognizer *)recognizer { // 在原来的基础上, 累加多少度 recognizer.view.transform
layoutSubviews:系统重写布局 setNeedsUpdateConstraints:告知需要更新约束,但是不会立刻开始 updateConstraintsIfNeeded:告知立刻更新约束...注意 先添加子视图,才能对子试图添加约束 如果想使用动画效果,需要如下代码: //重写updateViewConstraints方法,进行约束的更新- (void)updateViewConstraints...self.button = ({ UIButton *button = [[UIButton alloc] init]; button.backgroundColor = [UIColor orangeColor...可以使用辅助的contentView来设置,思路大概如下 //首先设置scrollview的约束[_scrollView mas_makeConstraints:^(MASConstraintMaker...); // 大小 = _scrollView make.width.equalTo(_scrollView); // width = _scrollView}]; UIView *lastView;CGFloat
:点击ScrollView上的textFiledView -> 再点击ScrollView上的button 希望能够收起键盘(项目中有无数个这样的操作) 材料:BaseViewController(...分别取消第一响应者 [[[UIApplication sharedApplication] keyWindow] endEditing:YES]; } 注:点击添加在self.view上的控件已经可以响应了...,但是ScrollView上的控件不会响应。...上的textFiledView已经可以响应了,但是ScrollView上的button还是不能响应 3....写一个category类目 UIButton + Event.h – (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent
领取专属 10元无门槛券
手把手带您无忧上云