0

我有一个UIView可以滚动但不能缩放的子类。我正在使用自动布局,所以想知道 IOS6 中是否有任何变化。特别是何时实现scrollViewWillBeginZoomingscrollViewDidEndZooming方法。我的代码看起来像

- (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。实施只是为了追踪正在发生的事情。有趣的是, viewForZoomingInScrollView似乎只被调用一次,因为scrollViewDidEndZooming比例值略低于 1 但从scrollViewWillBeginZooming未被调用。定义了属性 ringSet2

@property (strong, nonatomic) IBOutlet RingView *ringSet2;

因为如果视图被定义为弱,则视图不会出现。

4

1 回答 1

0

为此道歉。答案真的很愚蠢。我目前正在模拟器上的 IOS 6.0 下开发,而我的手机仍在 IOS 5 上。模拟器允许您模拟捏合,但仅以屏幕中心为中心。然而,滚动视图只有在它也在中心时才会接收到这个信号,而在我的初始构建中不是这种情况。将滚动视图的矩形移动到中心解决了这个问题。您不会在真实设备上进行此错误测试。因此代码是可以的。失去了 3 或 4 个晚上,我把头发拉过这个。

于 2013-01-10T00:04:00.870 回答