私は
UITableViewCell
下の図のようにしています。
セルは、delete が占める高さを占めます。セルの高さは、2 つのセルの間隔を保つように設定されます。
今、スワイプして削除ボタンが表示されると(赤の色)、上の図に示すようにセルの高さを占めます。その高さを白い部分の高さだけに設定するか、灰色のボタンの高さを言いたいだけです。スワイプした後に表示される削除ボタンの高さを設定する方法について誰か助けてもらえますUITableViewCell
か?
私は
UITableViewCell
下の図のようにしています。
セルは、delete が占める高さを占めます。セルの高さは、2 つのセルの間隔を保つように設定されます。
今、スワイプして削除ボタンが表示されると(赤の色)、上の図に示すようにセルの高さを占めます。その高さを白い部分の高さだけに設定するか、灰色のボタンの高さを言いたいだけです。スワイプした後に表示される削除ボタンの高さを設定する方法について誰か助けてもらえますUITableViewCell
か?
これを解決する最善の方法は、オーバーライドすることでした
-(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;
}
このメソッドを 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;
}
}
以下のコードをカスタムセルに書き込んでください。うまくいくことを願っています-
- (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];
}
}
}
迅速
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
}
}
}