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
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
.
Nasıl özel yöntemleri, alanları veya i...
() Anlayış Python süper __init__() yön...
Bu PUT, DELETE, vb yöntemleri çoğu web...
Sınıf ve örnek yöntemleri arasındaki f...
Neden't JUnit assertNotEquals yön...