首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在iOS中水平滚动字符,中心放大字符

在iOS中水平滚动字符,中心放大字符
EN

Stack Overflow用户
提问于 2015-06-23 04:23:24
回答 3查看 1.1K关注 0票数 1

要求:

  • 一行字母表
  • 使用滑动手势,用户可以从左向右滑动字母&反之亦然。
  • 中心的圆圈/放大镜,它会放大中心的字符

在iOS中,我希望在一行中显示字母表,这些字母可以从左向右滚动&使用滑动手势从右向左滚动。在中心,会有一个放大镜/圆圈一样的东西,显示放大版本的字母表目前在中心。这个较大的大小显示用户希望选择该字符。

下面的字符可以水平滚动,D会出现在一个圆圈/放大镜下,上面有一个大字体标记用户的选择。

A、B、C、、D、、E、F、G

这需要在iOS 8和Xcode 6中使用swift。我知道可可触摸也可能出现在图片中&我对此很满意。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-23 07:36:11

根据您需要的需求,使用UICollectionView。它类似于表视图,但更灵活。您可以浏览使用UICollectionView的苹果文档。

班级/

这里总结了UICollectionViewhttp://nshipster.com/uicollectionview/的优点

要实现放大功能,您可能需要使用UICollectionViewDelegate方法:

-layoutAttributesForElementsInRect:

您可以在其中为rect中的单元格设置属性(例如,放大大小)。上面的链接也对此作了解释。

票数 0
EN

Stack Overflow用户

发布于 2015-06-23 04:40:42

你会想要把这些字母放在UIScrollView里。这涵盖了您的大部分需求。具体取决于您希望滚动的方式将决定您是否需要.pagingEnabled。至于放大镜,您可以实现类似于代码这里的东西。我非常肯定,您还需要在滚动视图.setNeedsDisplay中调用scrollViewDidScroll:

编辑:

在评论中,一个问题被问到如何揭示所有的文本。有两种选择。

选项1:对于每个字符,可以将其添加到具有固定宽度并将其origin.x设置为前一个标签的CGRectGetMaxX()的新标签中。

选项2:您可以计算文本的宽度并将标签宽度设置为返回的值。我对斯威夫特还不太熟悉,所以我会把它写在目标C上。

代码语言:javascript
运行
复制
CGSize maxSize = CGSizeMake(CGFLOAT_MAX, self.scrollView.bounds.size.height);

// if using label.text
CGFloat width = ceilf([self.label.text boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:self.label.font} context:nil].size.width);

// if using label.attributedText
CGFloat width = ceilf([self.label.attributedText boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin context:nil].size.width);

ceilf()中包装宽度是很重要的,这样最后一个字符就不会从四舍五入中剪短。

票数 0
EN

Stack Overflow用户

发布于 2015-06-23 04:45:55

https://github.com/acoomans/iOS-MagnifyingGlass也许能帮上忙。

把这个放在你的滚动视图上就行了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30993833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档