をしながら私のアプリは、私が拡大し、ピンチジェスチャーを認識しながらのUITableViewをリロードしてるのiOS 5にその中ピンチジェスチャー認識
をiPhoneアプリをやって非常に遅いです。
これはシミュレータでうまく動作します。しかし、デバイスでは非常に遅く動作します。たとえば、UIGestureRecognizerStateEndedの後のデバイスでは、すべての行のみが展開されますが、シミュレータでは、UIGestureRecognizerStateChangedが実行されている間に行が展開および再ロードされています。
メモリの問題についてのご意見はありますか?
私のコードは、問題がどこにあるかを最適化するために何を、あなたが測定する必要がありますを把握しようとする前に、ここで
if (pinchRecognizer.state == UIGestureRecognizerStateBegan) {
self.initialPinchHeight = rowHeight;
[self updateForPinchScale:pinchRecognizer.scale];
}
else {
if (pinchRecognizer.state == UIGestureRecognizerStateChanged) {
[self updateForPinchScale:pinchRecognizer.scale];
}
else if ((pinchRecognizer.state == UIGestureRecognizerStateCancelled) || (pinchRecognizer.state == UIGestureRecognizerStateEnded)) {
}
}
-(void)updateForPinchScale:(CGFloat)scale{
CGFloat newHeight = round(MAX(self.initialPinchHeight * scale, DEFAULT_ROW_HEIGHT));
rowHeight = round(MIN(30.0, newHeight));
/*
Switch off animations during the row height resize, otherwise there is a lag before the user's action is seen.
*/
BOOL animationsEnabled = [UIView areAnimationsEnabled];
[UIView setAnimationsEnabled:NO];
[self.tableView beginUpdates];
NSArray *visibleRows = [self.tableView indexPathsForVisibleRows];
[self.tableView reloadRowsAtIndexPaths:visibleRows withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates];
[UIView setAnimationsEnabled:animationsEnabled];
}
お返事ありがとうございました。私のコードでは、間違いが1回ありました。間違いは、beginupdateとendupdatesの間に行をリロードすることです。修正後、私のアプリは私のiPhone上で正常に動作しています。 – Jirune