• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

objective-c - 仅在 x 轴上捏缩放 UIScrollView

[复制链接]
菜鸟教程小白 发表于 2022-12-12 21:29:33 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我希望能够在 UIScrollView 上捏缩放,以便 subview 仅在 x 轴上展开/收缩。

我创建了一个 UIScrollView,并使用 addSubview 添加 UIViews。每个 UIView 中都有一个 UILabel 。我应该在数组中保留这些 UIView 吗?

当我缩放时,我不想影响文本大小,只影响每个框的宽度。我想我也需要最小和最大缩放级别。

Apple 的garageband 应用程序中使用了类似的东西。知道怎么做吗?

1.
-------------------------
|                       |
|  ------   -------  -- |
|  |  1 |   |  2  |  | 3|   < 10 UIView subclass boxes on a UIScollView,
|  |    |   |     |  |  |     with a UILabel in each UIView
|  ------   -------  -- |
|                       |
-------------------------

2.
-------------------------
|                       |
|  ----------   --------|  
|  | 1 more |   | 2     |    < During zoom-in pinch, boxes are stretched
|  |        |   |       |      in x-axis only. Label remains same font size
|  ----------   --------|      and left aligned, showing more text
|                       |
-------------------------



Best Answer-推荐答案


(连续第二次,我用一个比原来的前提简单得多的答案来回答我自己的 Q。我想我应该在提问之前总是从另一个角度看..)​​

对于我想要缩放的 UIView(仅限 x 轴),我将 View 子类化并添加此方法:

- (void)setTransformCGAffineTransform)newValue;
{
    newValue.d = 1.0;
    [super setTransform:newValue];
}

当然,我在将 UILabel 添加到此 UIView 时遇到问题。标签被拉伸(stretch)。所以答案是干脆不添加到UIView中,而是直接添加到 ScrollView 中。然后,如果您有几个 float 作为属性,表示标签的原始 x 原点和宽度,您可以在 ScrollView 缩放时使用 ScrollView 的比例来计算这些:

-(void)scrollViewDidZoomUIScrollView *)scrollView
{
    float scale = self.scrollView.zoomScale;
    self.label.frame = CGRectMake(self.originalXorigin*scale, self.label.frame.origin.y, self.originalWidth*scale, self.label.frame.size.height);
}

关于objective-c - 仅在 x 轴上捏缩放 UIScrollView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11038775/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap