Superview中UIPageControl的编程垂直对齐使用NSLayoutConstraint
Posted
技术标签:
【中文标题】Superview中UIPageControl的编程垂直对齐使用NSLayoutConstraint【英文标题】:Programmatic Vertical Alignment of UIPageControl in Superview using NSLayoutConstraint 【发布时间】:2013-11-06 21:15:18 【问题描述】:到目前为止,我能够避免使用自动布局,因此为(可能)愚蠢的问题道歉。
我有一个正在以编程方式构建的 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]];
就像我说的,我对自动布局真的很陌生,所以我不确定我是否正确地实现了这些方法。
感谢您提前提供的帮助。
【问题讨论】:
【参考方案1】:好的,我想出了怎么做。花了很多时间,但在我再次阅读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)]];
【讨论】:
以上是关于Superview中UIPageControl的编程垂直对齐使用NSLayoutConstraint的主要内容,如果未能解决你的问题,请参考以下文章