2013-06-06 15 views
26

Görüntü panosunda bazı denetleyici oluşturduğum bir iOS uygulamasına sahibim, denetleyicinin görünümünde bazı alt görünümler var. Şimdi Bu görünümde bir kaydırma görünümü eklemek istiyorum ve bu alt görünümleri o kaydırma görünümüne taşımak istiyorum. Ancak sorun, bu görünümleri scrollview öğesine sürüklediğimde, arayüz oluşturucu bu alt görünümü merkezliyor, tüm konum bilgileri kayboluyor.Hikaye panosundaki herhangi bir konum bilgisini değiştirmeden alt görünümleri bir görünümden başka bir görünüme taşıma?

Arabirim oluşturucunun bunu yapmasına izin vermek istemiyorum. Bu sorunu çözmek için uygun bir yol yok mu? Bu sorunu zaten araştırdım ve bu iki çözümü buldum ama hiçbiri benim durumumda yararlı değil.

Adding a subview to the current view without messing up positioning of objects in the view Bu çözümü kullanamıyorum çünkü bu, scrollview eklemek istediğimde başka bir görünüme görünüm katıyor.

XCode - Is there a way to drag a component from one view to another without losing its frame? Ayrıca, bu çözüm benim için yararlı değil çünkü ben bunu yaptığımda storyboard dosyası berbat ve bozuk.

cevap

56

Evet bunu yapmanın kolay bir yolu vardır:

Adım 1: görüşlerini

enter image description here

Adım 2 seçin: yılında Editör>yerleştir Git>Kaydırma Görünümü

enter image description here

Bitti!

enter image description here

PS. Bu aslında görüntülemeleri gruplamak için çok kullanışlı bir yol. Herhangi bir görüntüyü 'kapsayıcı' görünümüne yerleştirebilir, istediğiniz konum (görüntünün tersi) bile göreli konum bilgisini tutabilirsiniz ve daha sonra bunu bir grup olarak tutabilirsiniz ya da onları bir arada tutamazsınız.

for (UIView *view in [_viewAdd subviews]) { 
    [_viewMain addSubview:view]; 
} 

Not: önceki Superview yüzden var dan addSubview görünümü kaldırır kimse (benim yaptığım gibi) Bu program aracılığıyla yapmak için bir yol bulmaya çalışırken bu soruya rastlarsa

+0

Great Answer! Çok teşekkür ederim :) Sadece bulduğum küçük bir sorun, scrollview'de subview'ı yerleştirdiğimde, scrollview genişliği 320 yerine 340 olur. Ve bu nedenle her subview orgin.x kaynağı origin.x + 10 olur. Scrollview genişliğinin boyutunu 340 ila 320 arasında manuel olarak değiştirdiğimde, subview'in orgin.x dosyası hala origin.x + 10'dur. Bu yüzden orgin.x değerini manuel olarak değiştirmek zorundayım. Bunun için de bir çözüm var mı? Harika tekniğiniz için tekrar teşekkürler :) – iMemon

+1

Merhaba, bunu doğru anladığımdan emin değilim, ancak iki şeyi not etmelisiniz: 1. Her UIView'in çerçevesi ana görünümüne göredir. konumlarını göreli olarak kaydırırlar). 2. Görünümleri bu şekilde yerleştirirken, IB Apple'ın HIG'sine göre otomatik olarak bir dolgu ekler. Alt görünümlerinin konumlarını değiştirmeden bir 'kapsayıcı' görünümünü yeniden boyutlandırmak istiyorsanız, IB'deki "Alt görünümleri otomatikleştir" seçeneğinin işaretini kaldırmanız yeterlidir. Umarım bu mantıklıdır ... – Alladinian

+0

Evet haklısınız. Onu istediğim şekilde anladın.Ben zaten ilk noktayı biliyorum. 2. nokta ile ilgili olarak "IB, Apple'ın HIG'sine göre otomatik olarak bir dolgu ekler.", Bu davranışı istemediğimde ne yapmalıyım? – iMemon

3

, burada ben kullanarak sona erdi budur Kaldırma için kod gerek yok

İlgili konular