2013-02-27 12 views
36

convertPoint:toView: yöntemini tam olarak anlayamıyorum. convertPoint'i anlama: toView:

Apple belgelerinde

convertPoint:toView:

belirtilen bakış edilene alıcının koordinat sistemi için bir noktayı yazılıdır.

- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view 

Ama birinden diğerine bir noktaya dönüştürme yok aslında ne demek?

Her iki sınırda da farklı birimlerin mu olduğunu ima eder mi? Ya da sadece farklı değerler?

Eğer ikincisiyse, a'nın contentOffset değerini b'ye basitçe atayabildiğimiz böyle bir yöntem var mı?

CGPoint a = [a contentOffset]; 
[b setContentOffset:a]; 

Nasıl basitçe contentOffset atama farklı convertPoint:toView: nedir? Yoksa tüm kavramı yanlış mı anladım? dönüştürme noktaları gerçekten ne yapar? Bu yöntem ne zaman kullanılmalıdır?

+0

"view.transform" ile ilgili bir şey olduğuna inanıyorum. – Cyrille

+0

@Cyrille view.transform ne yapıyor? Merkez özelliğini başka bir görünüme atama? –

+0

http://stackoverflow.com/questions/2081753/getting-the-bounds-of-an-mkmapview – Rajneesh071

cevap

111

Her UIView'in kendi koordinat sistemi vardır. Başka bir UIView_2 içeren bir UIView_1'iniz varsa, bunların ikisi de içinde bir puan (10,10) olur.

convertPoint: toView: geliştiricinin bir görünümde bir nokta almasını ve noktayı başka bir görünüm koordinat sistemine dönüştürmesini sağlar.

Örnek: view1, view2 içerir. Görünüm2'nin sol üst köşesi view1 noktasında (10,10) veya daha iyisi view2.frame.orgin = {10,10}. Bu {10,10}, view1 koordinat sistemine dayanmaktadır. Çok uzak çok iyi.

Kullanıcı, görünüm 2'de {20,20} noktasında view2'ye dokunur. Şimdi bu koordinatlar view2 koordinat sisteminde. Artık covertPoint: toView: {20,20} 'yi view1 koordinat sistemine dönüştürmek için kullanabilirsiniz. touchPoint =

CGPoint pointInView1Coords = [view2 convertPoint:touchPoint toView:view1]; 

{20,20}

Yani şimdi pointInView1Coords koordinat sistemleri view1 içinde {30,30} olmalıdır. Şimdi bu örnekte sadece basit bir matematik vardı, ancak dönüşüme katkıda bulunan her türlü şey var. Dönüşümler ve ölçeklendirme akla gelir.

UIView çerçevesi, sınırları ve merkezi hakkında bilgi edinin. Hepsi birbiriyle bağlantılıdır ve görüş için koordinat sistemleriyle uğraşırlar. Onlarla bir şeyler yapmaya başlayana kadar kafa karıştırıcı. Bu çerçeveyi hatırla ve merkez ebeveynin koordinat sisteminde. Sınırlar, görünümün koordinat sistemindedir.

John