代码中创建的视图与Autolayout的交互

时间:2017-12-19 22:19:59

标签: ios autolayout constraints

我有一个我在代码中创建的tableview。以前,我分配了它的绝对坐标但是当我在故事板中切换到自动布局时 - 我不知道如何将它链接到它上面的元素。

基本上,tableView应该是容器视图的子视图,它应该是textField下面的大约12个点。谁能建议正确的方法来做到这一点?

这就是我目前创建和定位tableview的方式。

filename = ['file1.txt', 'file2.txt', 'file3.txt']
newfilename = ['newfile1.txt', 'newfile2.txt', 'newfile3.txt']
for l in filename :
    dic = {}
    with open(l, 'r') as fp:
        for t in fp :
            word = sorted(t.split(), key = str.lower)
            for w in word :
                if w not in dic:
                    dic[w] = 1
                else :
                    dic[w] += 1
    dicsort = sorted(dic.items(), key = operator.itemgetter(1), reverse = True)
    for l2 in newfilename :
        with open(l2, mode = 'w', encoding = 'utf-8') as fp:
            for k, v in dicsort :
                fp.write('\t'+ str(k) + '\t\t' + str(v)+'\n')

上面文本字段的故事板中的约束是:

_autocompleteTableView = [[UITableView alloc] initWithFrame:
                              CGRectMake(20, 200, 280, 300) style:UITableViewStylePlain];
[self.view addSubview:_autocompleteTableView];

感谢您的任何建议。

2 个答案:

答案 0 :(得分:0)

尝试使用锚点。它的使用非常简单,就像SB中的约束一样简单。

我认为guide最能展示它是如何运作的。向下滚动到标题使用布局锚点创建约束的部分。

希望它有所帮助!

答案 1 :(得分:0)

试试这个

声明

bool once = YES;

然后

-(void)viewDidLayoutSubviews
{

   if(once)
   {
           _autocompleteTableView = [[UITableView alloc] initWithFrame:
                          CGRectMake(20, 200, 280, 300) style:UITableViewStylePlain];

            [self.view addSubview:_autocompleteTableView]; 

            self.autocompleteTableView.translatesAutoresizingMaskIntoConstraints = NO;


           NSLayoutConstraint* con1=[NSLayoutConstraint constraintWithItem:  self.view  attribute:NSLayoutAttributeBottom  relatedBy:NSLayoutRelationEqual    toItem:self.autocompleteTableView attribute:NSLayoutAttributebottom multiplier:1 constant:20];



           NSLayoutConstraint* con2=[NSLayoutConstraint constraintWithItem:   self.view  attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual  toItem:self.autocompleteTableView attribute:NSLayoutAttributeLeading multiplier:1 constant:-20];


           NSLayoutConstraint* con3=[NSLayoutConstraint constraintWithItem:  self.view  attribute:NSLayoutAttributeTraling relatedBy:NSLayoutRelationEqual toItem:self.autocompleteTableView attribute:NSLayoutAttributeTraling multiplier:1 constant:20];                  


           NSLayoutConstraint* con4=[NSLayoutConstraint constraintWithItem:   self.autocompleteTableView  attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual   toItem:self.textfield attribute:NSLayoutAttributeBottom multiplier:1 constant:12];   


           [self.view addConstraints:@[con1,con2,con3,con4]];


           [self.view layoutIfNeeded];

            once = NO;



   }


}