ios:在其超级视图中的中心视图

Posted

技术标签:

【中文标题】ios:在其超级视图中的中心视图【英文标题】:ios: Center view in its superview 【发布时间】:2014-11-28 08:44:43 【问题描述】:

我正在尝试将my subviewbutton 放在其superview 中。所以我希望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】:
    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(on fromView:),则此方法改为从窗口基坐标转换。否则,视图和接收者必须属于同一个 UIWindow 对象。

注意:如果你使用自动布局的东西,那么你必须改变约束。不是框架或中心。

祝你好运:)

【讨论】:

【参考方案2】:

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

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 = 超级视图 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)

【讨论】:

以上是关于ios:在其超级视图中的中心视图的主要内容,如果未能解决你的问题,请参考以下文章

超级视图中的中心视图

iOS - 以编程方式使用自动布局将 UIView 定位在超级视图的中心

在 UITableViewCell iOS7 中搜索超级视图

UIVisualEffectView 不会模糊它的 SKView 超级视图

如何获得相对于滚动视图超级视图的滚动视图子视图的中心点?

在超级视图的中心保持两个可变宽度视图靠近在一起的约束