简体   繁体   English

UITableViewRowAction更改字体和/或大小

[英]UITableViewRowAction change font and/or size

I have a UITableView with cells having some UITableViewRowActions. 我有一个带有单元格的UITableView的UITableViewRowActions。 Our mockup uses a smaller font and a narrower UITableViewRowAction button. 我们的模型使用较小的字体和较窄的UITableViewRowAction按钮。 Is it possible to change the font and/or size of an UITableViewRowAction in any way? 是否可以通过任何方式更改UITableViewRowAction的字体和/或大小?

Apple's documentation states it's impossible, and therefore I'm asking whether there is another way around. Apple的文档指出这是不可能的,因此我想问是否还有另一种解决方法。

UITableViewCell is made up of a backgroundView and a contentView , which lays over the backgroundView what you can do is add UIButton s as subView s to your backgroundView and add a UIPanGestureRecognizer over the cell. UITableViewCell由一个backgroundView和一个contentView ,它们位于backgroundView ,您可以做的是将UIButton作为subView添加到backgroundView并在该单元格上添加一个UIPanGestureRecognizer So when you pan the cell horizontally only contentView moves, UIButton s get exposed. 因此,当您水平移动单元格时,只有contentView移动, UIButton会暴露出来。 So in cellForRowAtIndexPath 所以在cellForRowAtIndexPath

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
   UITableViewCell *myCell;
        myCell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"YOUR_IDENTIFIER"];

   //adding button to a view that is added as the backgroundview
   UIView *cellBackgroundUtilityView=[[UIView   alloc]initWithFrame:myCell.frame];
   [cellBackgroundUtilityView addSubview:<your button>]
   [myCell setBackgroundView: cellBackgroundUtilityView]

   //adding a gesture recognizer
   UIPanGestureRecognizer *panningCell=[[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(yourPanningTableViewCellMethod:)];
   [panningCell setDelegate:self];
   [myCell addGestureRecognizer:panningCell];
}

when the gesture recognizer will be active this method will be called 当手势识别器处于活动状态时,将调用此方法

-(void) yourPanningTableViewCellMethod:(id)sender
{
 // gesture recognizer is active
 UIPanGestureRecognizer* recognizer=(UIPanGestureRecognizer *) sender;
    UITableViewCell *tableCell=(UITableViewCell *)recognizer.view;

 //moving the contentView horizontally according to pan
 [tableCell.contentView setFrame:CGRectMake([recognizer translationInView:self.view].x, tableCell.contentView.frame.origin.y, tableCell.frame.size.width, tableCell.frame.size.height)];
}

when button's selector is called 调用按钮的选择器时

-(void)yourBackgroundViewButtonWasPressed
{
 // button was pressed
 // move content view of the cell back to origin
 [tableCell.contentView setFrame:CGRectMake(0.0, tableCell.contentView.frame.origin.y, tableCell.frame.size.width, tableCell.frame.size.height)];

 //do your stuff
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM