2016-03-24 52 views
0

UIView'imi UITableView üstbilgisi olarak ekledim, ancak yaptığımda kısıtlarım parçalara ayrıldı. Ben çalışıyorum benim chapterVerseLabel şekilde dairenin ortasında: Şimdiye kadar bunu yaparak ben böylece bunu gerçekleştirmekUITableView Üstbilgisinin İçinde UILabel'ı Ortaya Getirme

enter image description here

:

var allConstraints = [NSLayoutConstraint]() 
    let views = ["tableView" : tableView, "containerView" : containerView, "chapterVerseLabel" : chapterVerseLabel] 
    allConstraints += NSLayoutConstraint.constraintsWithVisualFormat("V:|-70-[chapterVerseLabel]-70-|", options: [], metrics: nil, views: views) 
    NSLayoutConstraint.activateConstraints(allConstraints) 

Ama bunu nasıl emin değilim aynı zamanda merkezlendi. Tüm bunları benim merkezleme girişimlerim gibi görünüyor, bir UITableView Üstbilgisinde bir şeyi merkezileştirmenin daha katı kurallarına uymayın.

Tüm fikirler kabul edilir.


Güncelleme

Bir .CenterX değerini ekleyerek çalıştı:

let leftConstraint = NSLayoutConstraint(item: chapterVerseLabel, attribute: .CenterY, relatedBy: .Equal, toItem: containerView, attribute: .CenterY, multiplier: 1.0, constant: 0.0) 
    containerView.addConstraint(leftConstraint) 
    let rightConstraint = NSLayoutConstraint(item: chapterVerseLabel, attribute: .CenterX, relatedBy: .Equal, toItem: containerView, attribute: .CenterX, multiplier: 1.0, constant: 0.0) 
    containerView.addConstraint(rightConstraint) 

Ama bu sonucudur: Şu anda enter image description here

, chapterVerseLabel oturur benim conta içinde tableView.tableHeaderView olarak atanan inerView. Öyle olsun:

tableView.tableHeaderView = containerView 

Herhangi bir fikir?

+0

1: Etiketinizin üstbilgi görünümünün alt görünümü olduğundan ve içinde başka bir görünüm olmadığından emin misiniz? 2: Muhtemelen bir sınırsızlık sınırını değiştirmeye ek olarak bir centerX kısıtlaması istiyorsun: 'V: | - (> = 70) - [chapterVerseLabel] - (> = 70) - |' –

+0

@DanielGalasko Üzgünüm, mutlak haklısın. 'ContainerView''ün bir alt görünümüdür, bu yüzden kısıtlarım kırıldı. Aslında onlar benim tableView ayrı bir görünüm olarak iyi çalışıyorlardı. Ve sonra bunları bir kez UITableView'in başlığı olarak yaptım, tüm kısıtlarım parçalandı. – Trip

+0

yardım etmekten mutluluk duyarım :) –

cevap

2

sorun zaten Üst ve Alt kısıtlamaları vererek etiketi sınırlanmış etmiş olduğudur. Ayrıca, önde gelen ve sondaki kısıtlamaları görmüyorum. Gerektiğinde etiketinizi dikey veya yatay olarak ya da gereksinimlerinize göre hizalamanız gerekiyor. containerView varsayarsak

NSLayoutConstraint *yCS =[NSLayoutConstraint constraintWithItem:chapterVerseLabel attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:containerView attribute:NSLayoutAttributeCenterY multiplier:1.0 constant:0.0]; 
[containerView addConstraint:yCS]; 

NSLayoutConstraint *xCS =[NSLayoutConstraint constraintWithItem:chapterVerseLabel attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:containerView attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:0.0]; 
[containerView addConstraint:xCS]; 

headerforView temsilci yönteminden dönen alır senin başlık görünümüdür. Etikete yükseklik ve genişlik sağlamanız gerekir.

+0

Cevabınız çok mantıklı. Ben onunla deniyorum, ama benim sorunum sectionVerseLabel 'in self.tableView' headerTableView olan containerView içinde olduğunu düşünüyorum .. Ben daha fazla bilgi ile yukarıdaki cevabımı güncelledi .. Ben muhtemelen daha önce dahil etmiş olmalıyım. Özür dilerim .. yardımlarınız için çok teşekkürler. – Trip

+0

Ah sadece cevabınıza dayanarak anladım. Kısıtlamayı tabloya ekledim ve mükemmel çalışıyor! – Trip

0

Merkezde bir görüş var. Merkezdeki dairesel görünüme bir görünüm (1/4) eklemek isterseniz, bunu görsel format ile yapamazsınız. chapterVerseLabel'u ortalamak istediğinizi farz ediyorum. Yani: En sınırlamasıyla

chapterVerseLabel.translatesAutoresizingMaskIntoConstraints = false 
yourCircularView.addsubView(chapterVerseLabel) 
let xCenterConstraint = NSLayoutConstraint(item: chapterVerseLabel, attribute: .CenterX, relatedBy: .Equal, toItem: view2, attribute: .CenterX, multiplier: 1, constant: 0) 
superview.addConstraint(xCenterConstraint) 

let yCenterConstraint = NSLayoutConstraint(item: chapterVerseLabel, attribute: .CenterY, relatedBy: .Equal, toItem: view2, attribute: .CenterY, multiplier: 1, constant: 0) 
superview.addConstraint(yCenterConstraint) 
+0

cevabınızda 'view2' nedir? – Trip