我有UITableView
个自定义的tableview单元格,每个单元格都有一个UIView
,里面有唯一的UIBezierPath
。我的UIView
伸展到我的tableview单元格,两端有一些间距,因此它不会引导屏幕。我的问题是当我的tableview进入编辑模式时,我的单元格向右移动,包含路径的视图的一部分超出了窗口。
通过执行以下操作,我可以在班次期间更改UIView的宽度:
- (void)didTransitionToState:(UITableViewCellStateMask)state
{
[super didTransitionToState:state];
if (state == UITableViewCellStateShowingEditControlMask)
{
CGRect newFrame = CGRectMake(self.waveView.frame.origin.x, self.waveView.frame.origin.y, self.waveView.frame.size.width -100, self.waveView.frame.size.height);
//I chose -100 just to test it out
self.waveView.frame = newFrame;
}
}
但是,在执行上述操作时,我的路径将继续超出视图和窗口。什么是解决这个问题的最佳方法?我相信缩放bezier路径是一个选项但是重绘路径,这会导致一些滞后并减少动画从编辑和非编辑模式转换时每秒的帧数,因为我正在重绘多个路径。这是我尝试的比例代码:
CGFloat scaleFactor = (self.waveView.frame.size.width-100)/self.waveView.frame.size.width;
self.waveView.frame = newFrame;
CGAffineTransform transform = CGAffineTransformScale(self.waveView.transform,
scaleFactor,
1);
[self.waveView.path applyTransform:transform];