菜鸟教程小白 发表于 2022-12-12 21:29:33

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


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

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

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

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

<pre><code>1.
-------------------------
|                     |
|------   --------- |
||1 |   |2|| 3|   &lt; 10 UIView subclass boxes on a UIScollView,
||    |   |   |||   with a UILabel in each UIView
|------   --------- |
|                     |
-------------------------

2.
-------------------------
|                     |
|----------   --------|
|| 1 more |   | 2   |    &lt; During zoom-in pinch, boxes are stretched
||      |   |       |      in x-axis only. Label remains same font size
|----------   --------|      and left aligned, showing more text
|                     |
-------------------------
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>(连续第二次,我用一个比原来的前提简单得多的答案来回答我自己的 Q。我想我应该在提问之前总是从另一个角度看..)​​</p>

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

<pre><code>- (void)setTransform:(CGAffineTransform)newValue;
{
    newValue.d = 1.0;
    ;
}
</code></pre>

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

<pre><code>-(void)scrollViewDidZoom:(UIScrollView *)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);
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于objective-c - 仅在 x 轴上捏缩放 UIScrollView,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/11038775/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/11038775/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: objective-c - 仅在 x 轴上捏缩放 UIScrollView