UIView
スクロールはできるがズームはできないサブクラスがあります。私は autolayout を使用しているので、IOS6 で何か変更があったのではないかと思いました。特に、scrollViewWillBeginZooming
およびscrollViewDidEndZooming
メソッドが実装されるのはいつですか。私のコードは次のようになります
- (void)viewDidLoad
{
[super viewDidLoad];
self.ringSet2 = [[RingView alloc] initWithFrame:CGRectMake(0, 0, 800, 800)];
[self.ringSet2 setDefaults];
/// ... more setup for other views but only ringSet2 is scrolled.
self.scrollview1.delegate=self;
self.scrollview1.scrollEnabled=YES;
self.scrollview1.contentSize=self.ringSet2.bounds.size
self.scrollview1.minimumZoomScale=0.2;
self.scrollview1.maximumZoomScale=5.0;
self.ringSet2.userInteractionEnabled=YES;
// ... needed elsewhere so other views can pick up their dimensionts
[self.view setNeedsLayout];
[self.view layoutIfNeeded];
/// ... code for additional views
[self.scrollview1 zoomToRect:CGRectMake(0, 0, 200, 200) animated:YES];
[self.scrollview1 addSubview:self.ringSet2];
}
と
-(UIView*)viewForZoomingInScrollView:(UIScrollView *)scrollView{
return self.ringSet2;
}
scrollViewWillBeginZooming
何が起こっているのかを追跡するためだけに実装されています。興味深いことに、
スケール値が 1 未満の場合とviewForZoomingInScrollView
同様に、1 回だけ呼び出されるように見えますが、呼び出されることはありません。プロパティ ringSet2 が定義されていますscrollViewDidEndZooming
scrollViewWillBeginZooming
@property (strong, nonatomic) IBOutlet RingView *ringSet2;
ビューが弱いと定義されている場合、ビューは表示されません。