菜鸟教程小白 发表于 2022-12-13 00:31:48

ios - UITableView “swipe to delete” 按钮框架问题


                                            <p><p>我在我的应用程序中使用了自定义 <code>UITableViewCell</code>,我正在尝试调整“滑动删除”按钮的框架。</p>

<p>这就是我正在做的:</p>

<pre><code>- (void)layoutSubviews {
    ;
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) return;
    ;
    ;
    ;
    for (UIView *subview in self.subviews) {
      if () isEqualToString:@&#34;UITableViewCellDeleteConfirmationControl&#34;]) {
            CGRect newFrame = subview.frame;
            newFrame.origin.x = newFrame.origin.x - 25;
            subview.frame = newFrame;
      } else if () isEqualToString:@&#34;UITableViewCellEditControl&#34;]) {
            CGRect newFrame = subview.frame;
            newFrame.origin.x = newFrame.origin.x - 25;
            subview.frame = newFrame;
      }
    }
}
</code></pre>

<p>它出现在新的位置,这很棒。但是,当我单击按钮使其消失时,按钮似乎突然向左移动了大约 10 个点,然后被移除。</p>

<p>为什么会发生这种情况,我该如何解决?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我不熟悉您使用的动画代码,但我会尝试使用 <a href="http://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableViewCell_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40006938-CH3-SW27" rel="noreferrer noopener nofollow"><code>willTransitionToState</code></a> (以及,如果需要,<a href="https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableViewCell_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40006938-CH3-SW21" rel="noreferrer noopener nofollow"><code>didTransitionToState</code></a> )而不是 <code>layoutSubviews</code> 在编辑 tableViewCells 期间处理动画。</p>

<p>从 iOS 3.0 开始,两者都可用。</p>

<p>将此代码放在 <code>UITableViewCell</code> 的子类中。它将处理来自一个 <a href="https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableViewCell_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40006938-CH3-SW78" rel="noreferrer noopener nofollow"><code>UITableViewCellStateMask</code></a> 的所有转换。到另一个,您可以实现转换到每个状态所需的动画。只需根据我添加的 NSLog 在适当的位置实现您需要的动画即可。 (再次,不熟悉你的动画代码,但我确实测试过它并使用此代码看到了结果)</p>

<pre><code>- (void)willTransitionToState:(UITableViewCellStateMask)state {

    ;

    if (state == UITableViewCellStateDefaultMask) {

      NSLog(@&#34;Default&#34;);
      // When the cell returns to normal (not editing)
      // Do something...

    } else if ((state &amp; UITableViewCellStateShowingEditControlMask) &amp;&amp; (state &amp; UITableViewCellStateShowingDeleteConfirmationMask)) {

      NSLog(@&#34;Edit Control + Delete Button&#34;);
      // When the cell goes from Showing-the-Edit-Control (-) to Showing-the-Edit-Control (-) AND the Delete Button
      // !!! It&#39;s important to have this BEFORE just showing the Edit Control because the edit control applies to both cases.!!!
      // Do something...

    } else if (state &amp; UITableViewCellStateShowingEditControlMask) {

      NSLog(@&#34;Edit Control Only&#34;);
      // When the cell goes into edit mode and Shows-the-Edit-Control (-)
      // Do something...

    } else if (state == UITableViewCellStateShowingDeleteConfirmationMask) {

      NSLog(@&#34;Swipe to Delete button only&#34;);
      // When the user swipes a row to delete without using the edit button.
      // Do something...
    }
}
</code></pre>

<p>如果您需要在这些事件之一之后发生某些事情,只需实现相同的代码,但在 <code>didTransitionToState</code> 中。应用相同的 <code>UITableViewCellStateMask</code>。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - UITableView“swipe to delete” 按钮框架问题,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/14325758/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/14325758/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - UITableView “swipe to delete” 按钮框架问题