SubViews UIScrollView не изменят размер

Дизайн:
Иерархия просмотров выглядит следующим образом:

  • UIScrollView (для подкачки нескольких изображений)
    • UIScrollView (для включения масштабирования UIImageView )
      • UIImageView
        • UIView (происхождение, размер относительно UIImage в UIImageView )
        • UIView
        • UIView
    • UIScrollview
      • UIImageView
        • UIView
        • UIView
    • UIScrollView … и так далее

Реализация:

 - (id)init { self = [super init]; if (self) { // Custom initialization self.minimumZoomScale = 1.0f; self.maximumZoomScale = 4.0f; self.zoomScale = 1.0f; self.bouncesZoom = true; self.bounces = true; self.tag = 10; self.alwaysBounceHorizontal = false; self.autoresizesSubviews = YES; self.zoomView = [[UIImageView alloc] init]; self.zoomView.userInteractionEnabled = YES; self.zoomView.autoresizesSubviews = YES; } return self; } - (void)displayImage:(UIImage *)image { // Set the image in the view [_zoomView setImage:image]; // Set the Frame size to the size of image size // Ex. Resulting ScrollView frame = {0,0},{1250,1500} // Ex. Resulting ImageView frame = {0,0}, {1250,1500} CGRect scrollFrame = self.frame; scrollFrame.size.width = image.size.width; scrollFrame.size.height = image.size.height; self.frame = scrollFrame; CGRect iViewFrame = _zoomView.frame; iViewFrame.size.width = image.size.width; iViewFrame.size.height = image.size.height; _zoomView.frame = iViewFrame; // Add subviews before resetting the contentsize for (customClass* field in list.fields) { UIView* view = [[UIView alloc] initWithFrame:CGRectMake([field.x floatValue], [field.y floatValue], [field.width floatValue], [field.height floatValue])]; view.backgroundColor = [UIColor redColor]; view.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleTopMargin |UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; [_zoomView addSubview:view]; } // Set the Frame size to the size of scrollview frame size // Ex. Resulting ScrollView Frame = {0,0},{320,460} // Ex. Resulting ImageView Frame = {0,0},{320,460} CGRect scrollViewFrame = self.frame; scrollViewFrame.size.width = 320.0f; scrollViewFrame.size.height = 460.0f; self.frame = scrollViewFrame; CGRect imageViewFrame = _zoomView.frame; imageViewFrame.size.width = self.bounds.size.width; imageViewFrame.size.height = self.bounds.size.height; _zoomView.frame = imageViewFrame; self.contentSize = _zoomView.bounds.size; [self addSubview:_zoomView]; } 

Выше код, который я пытался реализовать. Он добавляет UIView в UIImageView внутри UIScrollView . Но относительное происхождение UIView неверно (как до, так и после изменения размера).

Есть ли что-нибудь, что я должен делать по-другому, чтобы правильно установить UIImageView внутри UIImageView ?

Это было поразительно для Google, потому что «scrollview subviews wont resize». Для кого-либо, следующего за этой ссылкой:

Глядя на ваш источник и сравнивая с моим, я понял, что в интерфейсе Builder в моем файле NIB был отмечен флажок «Подкатегории автоматического размера». У меня смутная память, возможно, это связано с тем, что в старой версии Xcode (это старый проект, который поддерживается некоторое время) … UIScrollView по умолчанию отключил его.

Итак: убедитесь, что вы правильно настроили его в Xcode / Interface Builder и / или устанавливаете его в коде.

Interesting Posts
Давайте будем гением компьютера.