4

ここに画像の説明を入力私はUITableViewCell下の図のようにしています。

セルは、delete が占める高さを占めます。セルの高さは、2 つのセルの間隔を保つように設定されます。

今、スワイプして削除ボタンが表示されると(赤の色)、上の図に示すようにセルの高さを占めます。その高さを白い部分の高さだけに設定するか、灰色のボタンの高さを言いたいだけです。スワイプした後に表示される削除ボタンの高さを設定する方法について誰か助けてもらえますUITableViewCellか?

4

8 に答える 8

4

これを解決する最善の方法は、オーバーライドすることでした

-(void)layoutSubviews in YourCustomCell:UITableViewCell    

それから

if ([NSStringFromClass([subview class])isEqualToString:@"UITableViewCellDeleteConfirmationControl"]){
            UIView *deleteButtonView = (UIView *)[subview.subviews objectAtIndex:0];
                                CGRect buttonFrame = deleteButtonView.frame;
                                buttonFrame.origin.x = Xvalue;
                                buttonFrame.origin.y = Yvalue;
                                buttonFrame.size.width = Width;
                                buttonFrame.size.height = Height;
                                deleteButtonView.frame = buttonFrame;

         }
于 2014-07-01T04:31:32.973 に答える
3

このメソッドを customCell.m ファイルに追加します。

-(void) layoutSubviews
{
    NSMutableArray *subviews = [self.subviews mutableCopy];
    UIView *subview = subviews[0];

    if ([NSStringFromClass([subview class])isEqualToString:@"UITableViewCellDeleteConfirmationView"]){
        UIView *deleteButtonView = (UIView *)[subview.subviews objectAtIndex:0];
        CGRect buttonFrame = deleteButtonView.frame;
        buttonFrame.origin.x = deleteButtonView.frame.origin.x;
        buttonFrame.origin.y = deleteButtonView.frame.origin.y;
        buttonFrame.size.width = deleteButtonView.frame.size.width;
        buttonFrame.size.height = 46;
        deleteButtonView.frame = buttonFrame;
        subview.frame=CGRectMake(subview.frame.origin.x, subview.frame.origin.y, subview.frame.size.width, 46);
        deleteButtonView.clipsToBounds=YES;
        subview.clipsToBounds=YES;
    }
}
于 2015-12-23T11:56:08.973 に答える
0

以下のコードをカスタムセルに書き込んでください。うまくいくことを願っています-

- (void)willTransitionToState:(UITableViewCellStateMask)state
{
    [super willTransitionToState:state];
    if(state == UITableViewCellStateShowingDeleteConfirmationMask)
     {
        [self performSelector:@selector(resetDeleteButtonSize) withObject:nil afterDelay:0];
     }
 }



- (void)resetDeleteButtonSize
{
    NSMutableArray *subviews = [self.subviews mutableCopy];
    while (subviews.count > 0)
    {
        UIView *subV = subviews[0];
        [subviews removeObjectAtIndex:0];
        if ([NSStringFromClass([subV class])isEqualToString:@"UITableViewCellDeleteConfirmationButton"])
        {
            CGRect f = subV.frame;
            f.size.height = 74;
            subV.frame = f;
            break;
        }
        else
        {
            [subviews addObjectsFromArray:subV.subviews];
        }
    }
}
于 2014-12-17T12:17:50.230 に答える
-1

迅速

override func layoutSubviews() {
    super.layoutSubviews()
    for subview in self.subviews {
        if String(describing: type(of: subview.self)) == "UITableViewCellDeleteConfirmationView" {
            let deleteButton = subview
            let deleteButtonFrame = deleteButton.frame
            let newFrame = CGRect(x: deleteButtonFrame.minX, 
                                  y: deleteButtonFrame.minY,
                                  width: deleteButtonFrame.width,
                                  height: yourHeight)
            deleteButton.frame = newFrame
        }
    }
}
于 2017-09-09T14:28:20.700 に答える