【iOS开源代码】(4):FPPopover

原文:https://github.com/50pixels/FPPopover

 

这个框架完全可用于取代苹果的 UIPoverController,因为它不仅支持 iPad,还支持 iPhone。此外,你还可以在 iPhone 中定制它的外观和样式。

本项目原本是 Mobiloud 上的一个开源组件,在我意识到它的价值之后,我决定继续跟进这个项目。欢迎你给我留言或者通过 pull request 共享你的代码。

功能

  • 类似 UIPopoverController 。
  • 同时支持 iPhone 和 iPad。
  • 不使用任何图片, 完全用 Quartz 编写。
  • 可定制外观 (颜色, 大小)。
  • 自动调整弹出方向(箭头方向)。不管任何情况它都会自动找出最佳方向和大小。
  • 可以不显示箭头。
  • 可以不显示边框。
  • 使用 MIT 许可协议(可用于商业用途,可修改和重新发布)
  • 支持 ARC (看这里)。

使用前准备

要使用 FPPopoverControler,你需要以下文件:

  • FPPopoverController.m 和 .h (控制器)
  • FPPopoverView.m 和 .h
  • FPTouchView.m 和 .m
  • ARCMacros.h

用法

简单例子:

-(IBAction)buttonClicked:(UIButton*)okButton {

//the view controller youwant to present as popover

YourViewController*controller = [[YourViewController alloc] init];

//our popover

FPPopoverController*popover = [[FPPopoverController alloc] initWithViewController:controller];

//the popover will bepresented from the okButton view

[popoverpresentPopoverFromView:okButton];

//no release (ARC enable)

//[controller release];

}

以上代码将显示一个黑色的 popover ,箭头方向会自动调整,content 尺寸为 200*300,而且未使用委托。

YourViewController 对象的 title 将作为 popover 的title。

指定大小

默认的 content size 为200x300。但你可以设置它:

popover.contentSize = CGSizeMake(150,200);

content 属性指定最大尺寸,实际显示的尺寸根据屏幕布局进行优化(例如根据横屏或竖屏模式调整)。

指定颜色

  • FPPopoverBlackTint (default)
  • FPPopoverLightGrayTint
  • FPPopoverGreenTint
  • FPPopoverRedTint

popover.tint = FPPopoverRedTint;

如果需要更多的颜色请和我联系。

强制指定箭头方向

arrowDirection 属性可以强制指定箭头方向:

popover.arrowDirection = FPPopoverArrowDirectionUp;

不显示箭头

不显示箭头使用代码:

popover.arrowDirection = FPPopoverNoArrow;

不显示标题

//the view controller you wantto present as popover

YourViewController *controller= [[YourViewController alloc] init];

controller.title = nil;

不显示边框

popover.border = NO;

popover.tint = FPPopoverWhiteTint;

透明

通过 alpha 属性改变透明度:

popover.alpha = 0.8;

委托消息

首先设置 delegate 属性:

YourViewController *controller= [[YourViewController alloc] init];

FPPopoverController *popover =[[FPPopoverController alloc] initWithViewController:controller];

popover.delegate = controller;

....

当 popover 被显示时

- (void)presentedNewPopoverController:(FPPopoverController*)newPopoverController           shouldDismissVisiblePopover:(FPPopoverController*)visiblePopoverController;

当有新的 popover 呈现时调用这个方法。如果想解散老的 popover(释放),在这个方法中发送 dismiss 消息。

- (void)presentedNewPopoverController:(FPPopoverController*)newPopoverController           shouldDismissVisiblePopover:(FPPopoverController*)visiblePopoverController{

[visiblePopoverControllerdismissPopoverAnimated:YES];

[visiblePopoverControllerautorelease];

}

当 popover 解散时

-(void)popoverControllerDidDismissPopover:(FPPopoverController*)popoverController;

当 popover 被解散时调用此方法。这发生在用户点击 popover 以外区域或者发送了一个 dimiss 消息。

时间: 2024-10-06 06:24:53

【iOS开源代码】(4):FPPopover的相关文章

ios 开源代码

1.开源代码 http://www.oschina.net/iOS/codingList/365/ios-button http://www.devdiv.com/iOS_iPhone-iOS6%E6%96%B0%E7%89%B9%E5%BE%81%EF%BC%9A%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99%E5%92%8C%E7%A4%BA%E4%BE%8B%E6%B1%87%E6%80%BB-thread-127965-1-1.html http://code4

【iOS开源代码】(5):MKNetworkKit

ASIHTTPRequest (作者:BenCopsey) 是一个使用简单,可用于各种从简单到复杂的 HTTP 请求,或者可用于处理 Amazon S3.Rackspace 等 REST 服务的强大框架. 不幸的是,Ben 早在2011 年 9 月 21 日就已经声明停止开发和支持该框架(见http://allseeing-i.com/%5Brequest_release%5D; ). Ben 推荐了许多可替代的框架(比如AFNetworking, RestKit 或 LRResty).但最有潜

【iOS开源代码】(2):CKEditor

CKEditor 是当前最为知名的 HTML 编辑器,它具有所有主流 HTML 编辑器所应当具备的特点:所见即所得.简单易用.开源并支持各种主流的浏览器(IE.Oper.FireFox.Chrome.Safari).最重要的是,CKEditor 经过 10 年的不断完善和更新,其稳定性和兼容性已经不容质疑. 一.下载 CKEditor 最新版本当前为 4.3.进入 CKEditor 的下载页面(http://ckeditor.com/download),你会看到 4.3 版本又分为3个版本:基本

【iOS开源代码】(1):CCLHTTPServer

我从没有见过比 CCLHTTPServer 更简单的 iOS HTTP 服务器了.你甚至不用创建任何子类即可使用它.对于大部分任务,这个小巧但强悍的服务器能够满足你的需要. 它简单到令人发指,因此我认为光看它的主页介绍就已经足够了: https://github.com/cocodelabs/CCLHTTPServer CCLHTTPServer 是一个 iOS/OSX 下的简单HTTP 服务器框架. 一.用法 以下代码创建了一个简单的 HTTP 服务器,监听指定端口,并用指定的 CCLHTTP

【iOS开源代码】(3):DateTools

一.介绍 DateTools 是一个用于处理日期和时间的 O-C 库.它包含 3 个子库: NSDate+DateTools.Time Periods.Time Periods Group. 1.NSDate+DateTools 不知道你们是否有这种感觉,O-C 提供的 NSDate 似乎和其他语言的日期类不太一样,它更像是由 timeIntervalSince... 方法构造的 Unix 时间,另外在加上一个日历功能.但有时候我们更希望以日期组件"年.月.日"的方式来访问日期.这就是

iOS流行的开源代码库

本文介绍一些流行的iOS的开源代码库 1.AFNetworking 更新频率高的轻量级的第三方网络库,基于NSURL和NSOperation,支持iOS和OSX.https://github.com/AFNetworking/AFNetworking 2.GPUImage 图像处理库,基于OpenGL ES,图像处理效率高.https://github.com/BradLarson/GPUImage 3.Masonry 自动布局库.https://github.com/SnapKit/Mason

CocoaPods的使用(管理iOS项目中第三方开源代码)

CocoaPods是一个负责管理iOS项目中第三方开源代码的工具.可以节省设置和更新第三方开源库的时间,提高工作效率. 下面是CocoaPods的使用步骤,强烈建议在家里的网络做以下操作,公司的网太慢了,除非你觉得很快!! 1.打开终端 sudo gem install cocoapods 命令解释:用gem安装cocoapods工具包 输入这行命令后,会让你输入电脑密码 接下来就是一大堆安装操作,耐心等待. 然后会出现下面的情况 Installing ri documentation for

GitHub上史上最全的iOS开源项目分类汇总

学了这么久,还是抽时间把github上比较好用的第三方总结了一下: Category/Util sstoolkit 一套Category类型的库,附带很多自定义控件 功能不错-       BFKit 又一套Category类型的 Kit,还有几个工具类       APUtils 又一套Category类型的 Kit       QSKit 又一套Category类型的 Kit       iOS-Categories 又一套Category类型的 Kit       BlocksKit 将B

iOS开源库

youtube下载神器:https://github.com/rg3/youtube-dl我擦咧 vim插件:https://github.com/Valloric/YouCompleteMevim插件配置:https://github.com/spf13/spf13-vim ----------------Mac完整项目----------电台:https://github.com/myoula/sostart豆瓣FM:https://github.com/turingou/douban.fm