SORU
11 Aralık 2011, Pazar


ConvertRect:toView anlamak:, convertRect:FromView:, convertPoint:toView: convertPoint:fromView: yöntemleri

Bu yöntemlerin işlevleri anlamaya çalışıyorum. Bana onların semantiği anlamak için basit bir usecase verebilir misiniz?

Belgelere, örneğinconvertPoint:fromView:yöntem aşağıdaki gibi açıklanmıştır

Bir noktadan alıcı için belirli bir bakış koordinat sistemine dönüştürür.

Bu nedirkoordinat sistemidemek? Bu ne hakkındaalıcı?

Örneğin, duyu kullanarak yaparconvertPoint:fromView:aşağıdaki gibi mi?

CGPoint p = [view1 convertPoint:view1.center fromView:view1];

NSLog programını kullanarak, p değeri view1 merkezi ile denk olduğunu teyit ettim.

Şimdiden teşekkür ederim.

DÜZENLEME:ilgilenenler için basit bir kod parçası bu yöntemleri anlamak için yarattım.

UIView* view1 = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 150, 200)];
view1.backgroundColor = [UIColor redColor];

NSLog(@"view1 frame: %@", NSStringFromCGRect(view1.frame));        
NSLog(@"view1 center: %@", NSStringFromCGPoint(view1.center));   

CGPoint originInWindowCoordinates = [self.window convertPoint:view1.bounds.origin fromView:view1];        
NSLog(@"convertPoint:fromView: %@", NSStringFromCGPoint(originInWindowCoordinates));

CGPoint originInView1Coordinates = [self.window convertPoint:view1.frame.origin toView:view1];        
NSLog(@"convertPoint:toView: %@", NSStringFromCGPoint(originInView1Coordinates));

Her iki durumda da kendini.pencere alıcısıdır. Ama bir fark var. İlk durumda convertPoint parametre view1 ifade edilir koordinatları. Çıktı şudur:

convertPoint:fromView: {100, 100}

İkincisi, bunun yerine, convertPoint superview (self.olarak ifade edilir pencere) koordinatları. Çıktı şudur:

convertPoint:toView: {0, 0}

CEVAP
11 Aralık 2011, Pazar


Her görünüm, kendi koordinat sistemi - 0,0 ve genişlik ve yükseklikte bir kökeni vardır. Bu görünüm bounds dikdörtgen açıklanmıştır. Görünümü frame ancak, onun superview sınırları dikdörtgen içinde bu noktada aslına olacak.

Görünüm hiyerarşisinin en dış görünümü iOS ekranın sol üst tekabül eden 0,0 at aslına vardır.

Eğer bu görüşe 20,30 bir alt görünümünü eklerseniz, o zaman küme 0,0 bir nokta superview 20, 30 dakika içinde bir nokta karşılık gelir. Bu dönüşüm, bu yöntemleri ne yapıyorsun.

Eğer yukarıdaki örnekte kendisi için bir görünümden bir noktaya dönüştürür beri anlamsız (hayır cinas tasarlamak), hiçbir şey olmaz. Daha yaygın bir görüş bir noktada kendi superview ilgili olarak - eğer bir görünüm, örneğin: ekrana taşınıyor kapalı olmadığını test etmek için nerede olduğunu öğrenmek istiyorsunuz

CGPoint originInSuperview = [superview convertPoint:CGPointZero fromView:subview];

"Alıcı" bir standarttır objective-c vadeli ileti (yöntemler de mesaj olarak biliniyor) benim örnek burada yer alan nesnenin alıcı superview.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • filmurfreakur

    filmurfreaku

    29 Mart 2007
  • george sarintzotis

    george sarin

    2 Aralık 2007
  • Kiddyzuzaa

    Kiddyzuzaa

    25 ŞUBAT 2014