objective c - يوس 8 سغافينترانزفورماكيسكيل+أوتولايوت لا يعمل أي أكثر من ذلك



objective-c autolayout (1)

يبدو أن هناك بعض الوظائف ذات الصلة لمشكلتي ولكن لا يبدو أن أي مساعدة. كيف يمكنني ضبط نقطة الارتكاز الخاصة ب كالاير، عند استخدام أوتو لايوت؟

لدي معاينة مقيسة من تطبيقي (كبرنامج تعليمي)، والتي تم تصغير العرض القياسي (و فيونكونترولر) وعرضها على طريقة عرض أخرى.

=============
=           =
= --------- =
= -       - =
= -Preview- =
= -       - =
= --------- =
=    View   =
=============

لهذا يمكنني استخدام هذا الرمز:

previewViewController.view.transform = CGAffineTransformMakeScale(scale*2, scale*2);

أنا أيضا بحاجة إلى هذا العرض تحجيم لمحاذاة مع وحدة تحكم عرض البرنامج التعليمي. لهذا أنا خلقت "وجهة نظر نائب" الذي أريد وجهة نظري تحجيم لتتناسب مع الحجم.

لهذا يمكنني استخدام:

-(void)setConstraintsForPreviewViewController
{
    NSArray *attributes = @[@(NSLayoutAttributeLeftMargin), @(NSLayoutAttributeRightMargin), @(NSLayoutAttributeTopMargin), @(NSLayoutAttributeBottomMargin)];
    [attributes enumerateObjectsUsingBlock:^(NSNumber *obj, NSUInteger idx, BOOL *stop) {
        NSLayoutAttribute attribute = [obj integerValue];
        [self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.viewControllerPlaceholderView
                                                              attribute:attribute
                                                              relatedBy:NSLayoutRelationEqual
                                                                 toItem:previewViewController.view
                                                              attribute:attribute
                                                             multiplier:1
                                                               constant:0]];
    }];
}

هذا عملت جيدة I دائرة الرقابة الداخلية 7، ولكن بناء مع هكود 6 ودائرة الرقابة الداخلية 8 هذا يبدو أن كسر. يبدو كما هو الآن يحدد أولا القيود (التكيف مع العنصر النائب) ومن ثم موازاة أسفل (مما أدى إلى معاينة صغيرة جدا).

الشفرة:

-(void)setupPreviewViewController
{
    float scale = [self scale];
    previewViewController = [self.storyboard instantiateViewControllerWithIdentifier:[PLACEHOLDER_VIEWCONTROLLER_NAMES objectAtIndex:self.identifier]];

    previewViewController.view.transform = CGAffineTransformMakeScale(scale*2, scale*2);

    [self.view addSubview:previewViewController.view];
    previewViewController.view.translatesAutoresizingMaskIntoConstraints = NO;

    [self addChildViewController:previewViewController];

    [self setConstraintsForPreviewViewController];

    self.viewControllerPlaceholderToImageViewSpaceConstraint.constant = ([self hasNavigationBar] ? (44 * scale * 2) : -22 * scale * 2);

    self.viewControllerPlaceholderToBottomSpaceConstraint.constant = IS_WIDESCREEN ? 160 : 131;

    previewViewController.view.userInteractionEnabled = NO;

    [self.view setNeedsLayout];
}

يبدو وكأنه دائرة الرقابة الداخلية 8 علة بالنسبة لي. كان لي نفس القضية. كان حل بلدي لتعطيل أوتولايوت للمعاينة واللجوء إلى أوتوريزينغمسك.

preview.translatesAutoresizingMaskIntoConstraints = YES;
preview.autoresizingMask = (UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth);
preview.frame = view.bounds;

ولكن وجهة نظري معاينة هو وييماجيفيو عادي. ليس لدي أي فكرة عن كيفية العمل مع بعض معاينة المعاينة المستندة إلى أوتولايوت معقدة.

لدي الإعداد مماثلة تماما كما لك، وأنا لا استخدام نائب الرئيس فك على أعلى جدا، ولكن انها بنيت باستخدام أوتوريزينغمسك أيضا، بدا أسهل لتركز الأمور عموديا.

إذا كنت تستخدم أي قيود داخل عرض المعاينة والخبرة القضايا، ثم سأحاول أن التفاف المعاينة في واحد أكثر إيفيو ومعرفة ما إذا كان يعمل. [view (autoresizingMask, custom frame, scaled)] -> [view (autoresizingMask = Flexible W+H)] -> [Preview (Autolayout)]





ios-autolayout