[翻译] UPCardsCarousel

UPCardsCarousel

UPCardsCarousel is a carousel with a cards based UI for iOS.

UPCardsCarousel是一个旋转木马效果的UI控件.

UPCardsCarousel

Requirements

UPCardsCarousel uses ARC and requires iOS 7.0+.

需要ARC,iSO7.0以上.

Works for iPhone.

只针对iPhone开发.

Installation

CocoaPods

UPCardsCarousel is available through CocoaPods. To install it, simply add the following line to your Podfile:

你可以通过 CocoaPods 来安装.执行以下一段话即可.

pod "UPCardsCarousel"

Manual

Simply copy the folder UPCardsCarousel to your project and import it in XCode.

你只需要将UPCardsCarousel文件夹复制到你的项目中即可.

Usage

Start by importing the header file:

一开始,先引入头文件:

#import "UPCardsCarousel.h"

Now, you can create a UPCardsCarousel object by giving it a frame:

然后,你可以创建出UPCardsCarousel实体,然后给定一个frame值:

UPCardsCarousel *carousel = [[UPCardsCarousel alloc] initWithFrame:aFrame];

Then you need to assign to it:

之后,你需要设定代理以及给代理提供数据:

  • delegate object that conforms to the UPCardsCarouselDelegate protocol
  • dataSource object that conforms to the UPCardsCarouselDataSource protocol

Data Source

The data source informs the carousel about the total number of cards and the content of each card through two self-explanatory methods:

数据源是给carousel提供有多少张卡片,以及每张图片上面的内容:

  • - (NSUInteger)numberOfCardsInCarousel:(UPCardsCarousel *)carousel (required)
  • - (UIView *)carousel:(UPCardsCarousel *)carousel viewForCardAtIndex:(NSUInteger)index (required)

The labels in the banner are given with an optional method. If the data source doesn‘t implement this method, the label banner will not be displayed.

以下方法是可选方法,用来给卡片提供标题的,如果没有实现,默认是不会显示出来的.

  • - (NSString *)carousel:(UPCardsCarousel *)carousel labelForCardAtIndex:(NSUInteger)index (optional)

Delegate

The delegate is optional and will be notified when some events occur:

代理方法是非必须的,用以提示事件发生的时机:

  • - (void)carousel:(UPCardsCarousel *)carousel didTouchCardAtIndex:(NSUInteger)index
  • - (void)carousel:(UPCardsCarousel *)carousel willDisplayCardAtIndex:(NSUInteger)index
  • - (void)carousel:(UPCardsCarousel *)carousel willHideCardAtIndex:(NSUInteger)index
  • - (void)carousel:(UPCardsCarousel *)carousel didDisplayCardAtIndex:(NSUInteger)index
  • - (void)carousel:(UPCardsCarousel *)carousel didHideCardAtIndex:(NSUInteger)index

Methods

Method Description
reloadData Reloads the carousel data and recreates the visible cards and moves to the top of the cards deck
reloadDataWithCurrentIndex:(NSUInteger)index Reloads the carousel data and recreates the visible cards and moves to the specified index in the cards deck
reloadNumberOfCards Reloads only the number of cards in the carousel and doesn‘t change the visible cards
reloadCardAtIndex:(NSUInteger)index Recreates the card at the specified index
cardAtIndex:(NSUInteger)index Return the card view at the specified index

Customization

Cards Deck

Usually, the carousel will not display all the cards supplied by the data source at once. It will handle a infinite scrolling process by destroying and creating cards at both ends. The number of visible cards is given and can be customized through the following property:

通常情况下,carousel不会一下子显示出所有的图片.他有重用机制,并支持无限滑滚.可见的卡片数由以下方法提供:

  • maxVisibleCardsCount (default is 6)

You can customize the duration of the card movement between the hidden deck and the visible deck, with this property:

你可以定制每张卡片的移动时间,默认是0.4秒:

  • movingAnimationDuration (defaut is 0.4 seconds)

By default, the carousel will return to the top of the deck when making a double-tap on the first hidden card.

默认情况下,双击carousel会返回第一张显示的图片.

You can disable this behaviour by setting the doubleTapToTop property to NO.

你可以禁用双击功能.

Labels Banner

You can customize the text font and color of the banner through these two methods:

你可以通过以下两个方法来定制横幅:

  • - (void)setLabelFont:(UIFont *)font (default is system font)
  • - (void)setLabelTextColor:(UIColor*)color (default is [UIColor blackColor])

You can choose between two locations for the banner through the labelBannerPosition property:

你可以通过labelBannerPosition属性来设置位移值:

  • UPCardsCarouselLabelBannerLocation_bottom - the banner will be located below the cards deck (default)
  • UPCardsCarouselLabelBannerLocation_top - the banner will be located above the cards deck

Finally, you also have access to the banner view object through the labelBanner property so you can customize it as you want.

当然,你也可以写你自己的横幅view.给labelBanner赋值即可.

License

The MIT License (MIT)

Copyright (c) 2014 Paul Ulric

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
时间: 2024-10-14 08:43:11

[翻译] UPCardsCarousel的相关文章

在GlassFish应用服务器上创建并运行你的第一个Restful Web Service【翻译】

前言 本人一直开发Android应用,目前Android就业形势恶劣,甚至会一路下滑,因此决定学习服务器开发.采用的语言是java,IDE是Intellij,在下载Intellij的同时看到官网很多优秀的guide文章,于是按照guide成功完成了一个RESTful的demo.官方文档非常简洁,给我带来了很大的帮助,于是翻译之,希望对其他不愿意看原文的人有所帮助.由于水平有限,读者发现错误请指正,谢谢. 原文地址: https://www.jetbrains.com/help/idea/2016

Java 7 Concurrency Cookbook 翻译 序言

在日常的Java代码开发过程中,很难免地有对多线程的需求,掌握java多线程和并发的机制也是Java程序员写出更健壮和高效代码的基础.笔者找寻国内已出版的关于Java多线程和并发的的中文书籍和翻译书籍,大家一致推荐的是<Java Concurrency in Practice>,笔者暂时还没有看英文原版,笔者看的是它的翻译版<Java并发编程实战>,笔者读起来感觉并不通畅,不知道是翻译的问题还是原版本来就写得不够流畅,同时感觉知识的深度也超过了入门的需求. 笔者在机缘巧合之下,发现

[翻译] ORMLite document -- How to Use Part (二)

前言 此文档翻译于第一次学习 ORMLite 框架,如果发现当中有什么不对的地方,请指正.若翻译与原文档出现任何的不相符,请以原文档为准.原则上建议学习原英文文档. ---------------------------------------------------------------------------------------------- 二.如何使用 2.7 表的创建 ORMLite 提供了一些工具类为您存储在数据库中的类创建 table 和 schema. 2.7.1 Tabl

Reveal常用技巧(翻译来自Reveal官网blog)

翻译来自官网:http://revealapp.com/blog/reveal-common-tips-cn.html 以下基于Reveal 1.6. 用于快速上手的内置应用 刚刚下载Reveal,啥都还没配置呢,想先随便玩玩看,怎么办? 我们花了不少时间开发这个复杂程度类似与实际场景的Sample应用──Soundstagram(音频分享版的Instagram, ¯\_(ツ)_/¯),就是为了让大家能最快速地上手Reveal,尝试它的各种强大功能. 在 Help 菜单项中,点击 Inspect

qt 国际化(翻译时会触发changeEvent)

1. 修改工程文件 .pro ,加入翻译源文件 hello_world.ts: TRANSLATIONS += \        Resource/translations/hello_world.ts 写代码时需要注意下面两点:  2. 源码用 utf-8 字符集3. 源码中需要翻译的字符串必须用英文(不能有中文或其它语言),则需要用 tr()  函数.  例如: QMessageBox::information(this,tr("Information"),tr("Hel

还在吐槽翻译的外版书质量差吗?谈谈我个人的理解

很难想象哪个学习计算机技术的人是没看过这方面书籍的,如果只是在网上看看技术贴,那样得来的知识绝对是离散的,不系统的.而要真正学好一门学问(比如一门计算机语言或者一门技术),一本好书的作用是不言而喻的.很多人抱怨国人在技术图书方面抄来抄去,不求甚解,虽然出版图书者甚众,但最终成为精品者却凤毛麟角.于是,更多读者热衷于外版书.但显然,并非所有国人的外语水平都足以在阅读原版书籍时毫无障碍.那么退而求其次,寻求翻译版就成为一种看似不得已的选择. 不幸的是,网上对于翻译版书籍的吐槽可以说从未消停.我也看过

VLD 1.0 ReadMe翻译尝试

近期想学习下VLD的实现,打算从最简单的V1.0版本看起.以下是V1.0版本自己尝试翻译下,最新的2.x版本似乎强大了很多. 简介 Visual C++提供了内置的内存检测机制,但其充其量只满足了最小定位需求.VLD工具定位为内置内存泄漏的替代,提供了如下特性: 泄漏内存块的全调用栈回溯,包括文件及其行号: 泄漏内存完整转储(hex和ascii格式): 可定制的泄漏报告等级(报告的详细程度可配置) 相对于Purify和BoundsChecher工具其是免费的,而其他免费工具,往往需要入侵式代码.

如何调用有道翻译API(Java,HTTP)

申请Key 首先如图进入有道翻译,在下方点击"有道翻译API". 紧接着来调用数据接口,按提示完成下列输入框. 如下图所示,已经申请成功了. 下图是官方给的示例,可以有xml和json.jsonp等三种数据格式. 代码(Java) public class TestPost { public static void main(String[] args) { new ReadByPost().start(); } } class ReadByPost extends Thread{ @

Android studio project文件结构翻译

Android studio project文件结构翻译 个人翻译,用作备忘. 链接地址:https://developer.android.com/tools/projects/index.html#ApplicationModules Android Project Files Studio的项目文件和设置,设置的作用范围包含所有的module. 以以下的demo为例. .git:git版本控制的文件存放目录. .gradle:gradle执行一些编译所生成的目录 Idea: 由Intell