2016-05-05 5 views
0

UIScrollViewUIView(ContentViewとして)、UITableViewと2つのUIWebView(imgを参照)があります。私はViewControllerに配置する必要があります。xboxからScrollViewの制約を追加する

私は今それを行う方法

- (OrderInfoScrollView *)loadObject { 
    OrderInfoScrollView *result = nil; 
    NSArray* elements = [[NSBundle mainBundle] loadNibNamed: @"OrderInfoView" owner:self options: nil]; 
    for (id anObject in elements) 
    { 
     if ([anObject isKindOfClass:[self class]]) 
     { 
      result = anObject; 
      break; 
     } 
    } 

    return result; 
} 

それは正常に動作しますが、私はこのために制約を追加することはできません。

OrderInfoScrollView *newView = [[OrderInfoScrollView alloc] loadObject]; 
[self.view addSubview:newView]; 

し、initは次のようになります。私はequal width to self.view, leading space = 3, top margin = 0にする必要があります。

私はすでにこの試みた:

UIView *superView = self.OrderInfoView; 
[superView addSubview:newView]; 
NSDictionary *views = NSDictionaryOfVariableBindings(superView, newView); 
NSArray *equalWidthConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"[newView]" options:0 metrics:nil views:views]; 
NSArray *verticalConstraints =[NSLayoutConstraint 
//NSArray *equalWidthConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"[newView(==superView)]" options:0 metrics:nil views:views]; 
NSArray *verticalConstraints =[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[newView]" options:0 metrics:nil views:views]; 
NSArray *horizontalConstraints =[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[newView]" options:0 metrics:nil views:views]; 

[superView addConstraints:equalWidthConstraints]; 
[superView addConstraints:horizontalConstraints]; 
[superView addConstraints:verticalConstraints]; 

そして、このような何か:

NSLayoutConstraint *constraint = [NSLayoutConstraint 
             constraintWithItem:newView 
             attribute:NSLayoutAttributeWidth 
             relatedBy:NSLayoutRelationEqual 
             toItem:self.view 
             attribute:NSLayoutAttributeWidth 
             multiplier:1.0f 
             constant:0.0f]; 

[self.view addConstraint:constraint4]; 

はまた、私は追加のUIViewを配置し、これに私のスクロールビューを追加しようとしました(助けにはならなかったが)。構造はこのようなものだった:

-UIView 
--UIView 
---UIScrollView 

私はsetTranslatesAutoresizingMaskIntoConstraints:NOと新しいアプローチを試みたが、この場合には、私のUIScrollViewはまったく表示されません。

[newView setTranslatesAutoresizingMaskIntoConstraints:YES]; 
NSLayoutConstraint *width =[NSLayoutConstraint 
          constraintWithItem:newView 
          attribute:NSLayoutAttributeWidth 
          relatedBy:0 
          toItem:self.view 
          attribute:NSLayoutAttributeWidth 
          multiplier:1.0 
          constant:0]; 
[self.view addConstraint:width]; 

私は本当にこれを再利用する必要がありますUIScrollView

Nib with UIScrollView

答えて

0

それは長い道のりでしたが、私はそれを得ます。私はUIView(a.k.a ContentView)のために別々のxibを作り、すべてUIViews、そのfirst is top margin = 0およびlast one margin bottom = 0に制約を設定します。 の場合はsetTranslatesAutoresizingMaskIntoConstraints: NO、その内側のすべてのビューについては

OrderInfoView *contentView = [[OrderInfoView alloc] loadObject]; 
[self.orderInfoScrollView addSubview:contentView]; 

UIView *superView = self.orderInfoScrollView; 
OrderInfoView *newView = contentView; 
UIView *megaView = self.view; 
NSDictionary *views = NSDictionaryOfVariableBindings(superView, newView, megaView); 
NSArray *verticalConstraints =[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[newView]|" options:0 metrics:nil views:views]; 
NSArray *horizontalConstraints =[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[newView]|" options:0 metrics:nil views:views]; 

[superView addConstraints:horizontalConstraints]; 
[superView addConstraints:verticalConstraints]; 

[newView setTranslatesAutoresizingMaskIntoConstraints:NO]; 
NSLayoutConstraint *width =[NSLayoutConstraint 
          constraintWithItem:newView 
          attribute:NSLayoutAttributeWidth 
          relatedBy:0 
          toItem:megaView 
          attribute:NSLayoutAttributeWidth 
          multiplier:1.0 
          constant:0]; 
[megaView addConstraint:width]; 

誰かにとって役に立ちますように願っています。

関連する問題