首先我有一个名为FindFriendHeadPublish.h的自定义视图,它包含一个xib文件,如下所示,我设置了autolayout,视图是OC
我的名为PreviewViewController.swift的视图控制器也有一个xib 我将FindFriendHeadPublish视图添加到视图控制器,但FindFriendHeadPublish中的autolayout不起作用
override func viewDidLoad() {
super.viewDidLoad()
self.title = "我的卡片预览"
var addpreviewView = NSBundle.mainBundle().loadNibNamed("FindFriendHeadPublish", owner: nil, options: nil)
var previewView = addpreviewView.last as! FindFriendHeadPublish
previewView.setTranslatesAutoresizingMaskIntoConstraints(false);
GetUserInfoInterface.getUserInfoWithFUid(UserInfoSaveUtil.getUserInfo().userid, withBlock: { (userInfo:GetUserInfoVo! , error:NSError! ) -> Void in
})
self.scrollView.contentSize = CGSizeMake(320, 640)
self.scrollView.addSubview(previewView)
}
我已经检查了一些其他问题,但我找不到解决方案,任何人都可以提供帮助,谢谢
此外,自定义视图在另一个使用OC
写入的视图控制器中运行良好以上代码的工作原理如下
答案 0 :(得分:1)
首先将Hieght Constraint添加到nib中的previewView
然后在previewView.setTranslatesAutoresizingMaskIntoConstraints(false);
var constraints: NSMutableArray = NSMutableArray()
constraints.addObject(NSLayoutConstraint(item: previewView, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: self.scrollView, attribute: NSLayoutAttribute.Top, multiplier: 1.0, constant: 0.0))
constraints.addObject(NSLayoutConstraint(item: previewView, attribute: NSLayoutAttribute.Left, relatedBy: NSLayoutRelation.Equal, toItem: self.scrollView, attribute: NSLayoutAttribute.Left, multiplier: 1.0, constant: 0.0))
constraints.addObject(NSLayoutConstraint(item: previewView, attribute: NSLayoutAttribute.Right, relatedBy: NSLayoutRelation.Equal, toItem: self.scrollView, attribute: NSLayoutAttribute.Right, multiplier: 1.0, constant: 0.0))
self.scrollView.addConstraints(constraints as [AnyObject])
希望有所帮助。
答案 1 :(得分:0)
您没有为previewView及其超级视图设置约束,如果视图不在一个文件中,则您无法在IB中进行约束。
previewView.setTranslatesAutoresizingMaskIntoConstraints(false);
let viewBindingsDict = ["previewView":previewView, "view":self.view]
self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[previewView(==view)]", options: nil, metrics: nil, views: viewBindingsDict))
self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[previewView]", options: nil, metrics: nil, views: viewBindingsDict))
此示例将previewView左上角设置为控制器视图的宽度。 一个很好的教程:http://www.thinkandbuild.it/learn-to-love-auto-layout-programmatically/
建议在scrollview中仅使用一个视图,并将其用作其他视图的容器。 如果你加载一个笔尖并将所有者设置为自己