如何获得UITableView约束?

时间:2017-02-13 14:18:53

标签: ios swift uitableview autolayout nslayoutconstraint

我有UITableView有约束。当我尝试检索UITableView的约束时,它返回0个元素。有帮助吗?

self.tableView.constraints

3 个答案:

答案 0 :(得分:1)

您需要获取表视图超级视图约束并将表视图检查为第一项或第二项。

for constraint in (self.tableView.superview?.constraints)!  {
    if constraint.firstItem as! NSObject == self.tableView ||
    constraint.secondItem as! NSObject == self.tableView  {
        // table view constraints
    }
}

答案 1 :(得分:1)

以编程方式检索约束并不是一个好主意。

您可以使用constraintsAffectingLayout(for:)获取影响视图的所有约束,但是,您可能会获得比预期更多的约束。

最佳解决方案是在添加时限制对给定约束的引用。如果您使用的是故事板或xib,请为它们创建 protected void lblForPass_Click(object sender, EventArgs e) { SmtpClient client = new SmtpClient(); client.DeliveryMethod = SmtpDeliveryMethod.Network; client.EnableSsl = true; client.Host = "smtp.gmail.com"; client.UseDefaultCredentials = false; client.Port = 25; client.Timeout = 300000; System.Net.NetworkCredential credentials = new System.Net.NetworkCredential("mytestmail@gmail.com", "1122334455"); client.Credentials = credentials; MailMessage msg = new MailMessage(); msg.From = new MailAddress("mytestmail@gmail.com"); msg.To.Add(new MailAddress("mytestmail2@gmail.com")); msg.Subject = "Subject Test"; msg.IsBodyHtml = true; msg.Body = string.Format("<html><head></head><body><b>Body Test</b></body>"); try { client.Send(msg); ScriptManager.RegisterClientScriptBlock(this, GetType(), "Mail Status", "alert('Sended Successfuly')", true); } catch(Exception ex) { Exception ex2 = ex; string errorMessage = string.Empty; while (ex2 != null) { errorMessage += ex2.ToString(); ex2 = ex2.InnerException; } string err = ex.Message; ScriptManager.RegisterClientScriptBlock(this, GetType(), "Mail Error", "alert('" +err+"')", true); } }

答案 2 :(得分:0)

取决于应用约束的位置。 如果UITableView中有UIViewController并添加约束,那么约束将应用于UIViewController而不是UITableView

请改用此代码:

self.tableView.superview?.constraints