6

到目前为止,我能够避免使用自动布局,因此为(可能)愚蠢的问题道歉。

  • 我有一个正在以编程方式构建的 ViewController(例如,没有 IB)。
  • 我有一个 UIPageControl 对象,它位于 viewController 的视图的视图层次结构中(例如,addSubview:
  • 相反,我需要将 UIPageControl 对象与 UIViewController 主视图的底部边缘对齐。
  • 我希望 UIPageControl 水平居中,但距离底部边缘 20-40 像素。

这是我创建 UIPageControl 并显示它的一些示例代码,但根本不在正确的位置。

self.pageControl = [[UIPageControl alloc] init];
self.pageControl.numberOfPages = ...;
self.pageControl.otherAttributes = ...;
[self.view addSubview:[self pageControl]];

UIPageControl *pageControl = [self pageControl];
UIView *view = [self view];
NSDictionary *constaintDictionary = NSDictionaryOfVariableBindings(view, pageControl);


[self.view addConstraint:[NSLayoutConstraint constraintWithItem:pageControl
                                                     attribute:NSLayoutAttributeCenterX
                                                     relatedBy:NSLayoutRelationEqual
                                                        toItem:self.view
                                                     attribute:NSLayoutAttributeCenterX
                                                    multiplier:1
                                                      constant:0]];

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[pageControl]-20-[view]"
                                                                  options:0
                                                                  metrics:nil
                                                                    views:constaintDictionary]];

就像我说的,我对自动布局真的很陌生,所以我不确定我是否正确地实现了这些方法。

感谢您提前提供的帮助。

4

1 回答 1

6

好吧,我想出了怎么做。花了很多时间,但是在我再次阅读了Visual Format Language文档之后,我想出了这个:

UIPageControl *pageControl = [self pageControl];

[pageControl setTranslatesAutoresizingMaskIntoConstraints:NO];

[self.view addConstraints:[NSLayoutConstraint
                           constraintsWithVisualFormat:@"H:|-0-[pageControl]-0-|"
                           options:0
                           metrics:nil
                           views:NSDictionaryOfVariableBindings(pageControl)]];
[self.view addConstraints:[NSLayoutConstraint
                           constraintsWithVisualFormat:@"V:[pageControl]-40-|"
                           options:0
                           metrics:nil
                           views:NSDictionaryOfVariableBindings(pageControl)]];
于 2013-11-07T16:52:08.040 回答