ios:超视图中的中心视图

时间:2014-11-28 08:44:43

标签: ios swift view position autolayout

我试图在my subview buttonsuperview subview。所以我希望superview的中心成为override func viewDidLoad() { self.view.backgroundColor = UIColor.redColor() var menuView = UIView() var newPlayButton = UIButton() //var newPlayImage = UIImage(named: "new_game_button_5cs") var newPlayImageView = UIImageView(image: UIImage(named: "new_game_button_5cs")) newPlayButton.frame = CGRectMake(0, 0, newPlayImageView.frame.width, newPlayImageView.frame.height) newPlayButton.setImage(newPlayImage, forState: .Normal) newPlayButton.backgroundColor = UIColor.whiteColor() menuView.center = self.view.center menuView.center = CGPointMake(self.view.bounds.size.width / 2, self.view.bounds.size.height / 2) menuView.backgroundColor = UIColor.whiteColor()*/ menuView.addSubview(newPlayButton) } 的中心。我尝试使用以下代码:

{{1}}

不幸的是,它似乎有效,因为这是结果:

enter image description here

2 个答案:

答案 0 :(得分:3)

    UIView *subview = your View To Be Centered In Its SuperView;

    UIView *superView = subview.superview;

    subview.center = [superView convertPoint:superView.center
                                    fromView:superView.superview];

如果view为nil(在fromView :)上,则此方法将从window base coordinates转换。否则,视图和接收者都必须属于同一个UIWindow对象。

注意:如果您使用自动布局内容,则必须更改约束。不是框架或中心。

祝你好运:)

答案 1 :(得分:0)

尝试从超视图宽度中删除视图宽度,例如:

var width: CGFloat = (self.view.bounds.size.width / 2)

// (here goes your view width that you want centralize)

menuView.center = CGPointMake(width, self.view.bounds.size.height / 2)

我的工作代码

vRate = superview
rcRating = view(我想集中在vRate中)

self.rcRating = AMRatingControl(location: CGPoint(x: 0, y: 0), andMaxRating: 5)
self.vRate.addSubview(self.rcRating)

var width: CGFloat = (self.vRate.bounds.size.width / 2) - self.rcRating.bounds.size.width
self.rcRating.center = CGPointMake(width, self.vRate.bounds.size.height / 2)