Kakao: çərçivə və sərhədlər arasındakı fərq nədir?

UIView və bütün alt sinifləri framebounds xassələri vardır. Fərq nədir?

495
31 июля '09 в 3:07 2009-07-31 03:07 mk12 ilə 31.07.2009 tarixində 3:07, 2009-07-31 03:07 ilə təyin olunur
@ 8 cavab

UIView sərhədi öz koordinat sisteminə nisbətdə (x, y) və ölçüsü (genişlik, hündürlük) kimi ifadə edilir.

UİView çərçivəsi yerləşdiyi yerə (x, y) və ölçülərinə (genişlik, hündürlük) görə ifadə olunur.

Beləliklə, məsləhətçisinin 25.25 (x, y) yerində olan 100x100 (genişlik x xətt) görünüşünü təsəvvür edin. Aşağıdakı kod bu çərçivələri və təqdimat çərçivələrini yazır:

 // This method is in the view controller of the superview - (void)viewDidLoad { [super viewDidLoad]; NSLog(@"bounds.origin.x: %f", label.bounds.origin.x); NSLog(@"bounds.origin.y: %f", label.bounds.origin.y); NSLog(@"bounds.size.width: %f", label.bounds.size.width); NSLog(@"bounds.size.height: %f", label.bounds.size.height); NSLog(@"frame.origin.x: %f", label.frame.origin.x); NSLog(@"frame.origin.y: %f", label.frame.origin.y); NSLog(@"frame.size.width: %f", label.frame.size.width); NSLog(@"frame.size.height: %f", label.frame.size.height); } 

Və bu kodun çıxışı:

 bounds.origin.x: 0 bounds.origin.y: 0 bounds.size.width: 100 bounds.size.height: 100 frame.origin.x: 25 frame.origin.y: 25 frame.size.width: 100 frame.size.height: 100 

Beləliklə, hər iki halda, sərhədlərə və ya çərçivələrə baxdığımıza baxmayaraq, görünüşün genişliyi və hündürlüyü eynidır. Başqa bir fərq x, y görünüşünün yerləşdirilməsidir. Sərhədlər şəraitində x və y koordinatları 0.0 təşkil edir, çünki bu koordinatlar nümayəndəliyin özünə aiddir. Ancaq, x və y çərçivəsinin koordinatları, yuxarı baxımdan görünüşün mövqeyinə istinad edir (əvvəllər dedik ki, 25.25 idi).

UIViews əhatə edən mükəmməl bir təqdimat da var. Yalnızca çərçivələr və sərhədlər arasındakı fərqləri izah etməklə yanaşı, əyani nümunələri də göstərən Slayd 1-20-ə baxın.

796
31 июля '09 в 3:43 2009-07-31 03:43 cavab 31 iyul 2009-cu il saat 03: 43-da veriləcək

Qısa cavab

çərçivə = üst görünüşün koordinat sistemindən istifadə edərək görünüşün yeri və ölçüsü

  • Mühüm: Görünümü ana tərəfə yerləşdirin.

sərhədləri = öz koordinat sistemindən istifadə edərək görünüşün yeri və ölçüsü

  • Mühümdir: görünüşün məzmununu və ya daxili nəzərdən keçirmək

Ətraflı cavab

Mənə çərçivəni xatırlamaq üçün , divar üzərində bir çərçivə düşünürəm. Şəkil çərçivəsi təqdimat sərhədinə bənzəyir. Divarın hər hansı bir yerində bir şəkil çəkə bilərəm. Eyni şəkildə, üst görünümdə (super-baxımdan da adlandırılan) hər hansı bir yerə baxa bilərsiniz. Parental bir divar kimi görünür. İOS-də koordinat sisteminin mənşəyi yuxarıdır. Divarın yuxarı sol küncündə bizim image asılı kimi, xy koordinatları baxım çərçivəsində (0, 0) yerləşdirməklə nəzarətçi mənşəyi haqqında fikir qoymaq olar. Sağa doğru hərəkət etmək üçün x'yi y artmaq üçün x'yi artırın.

Qutuyu yadda saxlamağa kömək etmək üçün basketbol meydanında bəzən basketbolun kənarında olduğu düşünürəm. Topu basketbol sahəsinin ətrafında aparırsınız, ancaq məhkəmənin özünün harada olduğunu düşünmürsən. Bu idman zalı və ya liseydə və ya evin qarşısında ola bilər. Fərq etməz. Yalnız basketbol oynamaq istəyirsən. Eynilə, nəzərdən keçirmək üçün əlaqələndirici sistem yalnız təqdimatın özü ilə məhdudlaşır. Görünüşün valideyn baxımından olduğu barədə heç bir şey bilmir. Sərhəd eşikası (default olaraq (0, 0)) - görünüşün yuxarı sol küncündə. Bu baxımdan hər hansı bir yanaşma bu nöqtəyə aiddir. Məhkəmənin yuxarı sol küncündə basketbol çəkmək kimi.

Çərçivələr və çərçivələri müqayisə etməyə çalışarkən artıq qarışıqlıq var. Əslində, bu ilk baxışdan göründüyü kimi pis deyil. Anlayışımıza kömək etmək üçün bəzi fotoşəkillər istifadə edək.

Sərhədlərə qarşı çərçivə

Solda ilk görünüşdə, üst görünüşün yuxarı sol küncündə olan bir görünüşümüz var. Sarı qutu təqdimat çərçivəsini təmsil edir. Sağ tərəfdə görünüşü yenidən görürük, ancaq bu dəfə ana baxış görünmür. Bunun səbəbi, sərhədlərin ana nümayəndəlikdən xəbərdar olmadığıdır. Yaşıl düzbucaq görünüşün hüdudlarını təmsil edir. hər iki şəkildəki qırmızı nöqtə çərçivənin və ya sərhədlərin mənşəyini təmsil edir.

 Frame origin = (0, 0) width = 80 height = 130 Bounds origin = (0, 0) width = 80 height = 130 

2019

488
07 марта '15 в 20:18 2015-03-07 20:18 Suragch tərəfindən 07.03.2013 tarixində saat 20:18 da cavab verildi

Aşağıdakı kodu cəhd edin

 - (void)viewDidLoad { [super viewDidLoad]; UIWindow *w = [[UIApplication sharedApplication] keyWindow]; UIView *v = [w.subviews objectAtIndex:0]; NSLog(@"%@", NSStringFromCGRect(v.frame)); NSLog(@"%@", NSStringFromCGRect(v.bounds)); } 

bu kodun çıxışı:

qurğu orientation cihazı - portret

 {{0, 0}, {768, 1024}} {{0, 0}, {768, 1024}} 

qurğu orientation cihazı - landşaft

 {{0, 0}, {768, 1024}} {{0, 0}, {1024, 768}} 

Şübhəsiz ki çərçivə ilə sərhəd arasındakı fərqləri görə bilərsiniz

43
04 янв. cavab tristan 04 jan verildi . 2013-01-04 04:44 '13 'da 4:44' də 2013-01-04 04:44

Bir çərçivə , nəzarətçi ilə əlaqəli bir UIView müəyyən edən düzbucaqlıdır.

həddi rect bu NSView koordinat sistemini təyin edən dəyərlər üçündür.

yəni. Bu dikdörtgədə bir şey UIView'da göstərilir.

13
23 мая '12 в 15:19 2012-05-23 15:19 cavab 23 may 2012- ci il tarixində saat 15 : 19-da Jorik tərəfindən verilmişdir

Çərçivə başlanğıcdır (yuxarı sol künc) və görünüşün ölçüsü super baxım koordinat sistemində, yəni görünüşü, super görünüşünə çevirərək, çərçivənin başlanğıcını dəyişdirərək, sərhədləri digər tərəfdən, öz sisteminizdə koordinatların ölçüsü və mənşəyi koordinatları təşkil edir, dolayısı ilə mənşə mənbəyidir (0,0).

əksər hallarda çərçivə və sərhədlər uyğundur, ancaq çərçivə haqqında bir fikiriniz varsa ((140.65), (200.250)) və məhdudiyyətlər ((0,0), (200, 250)), məsələn, aşağı sağ küncdə olduğu üçün sərhədlər ((0,0), (200, 250)) qalacaq, ancaq çərçivə yoxdur.

2019

9
08 апр. cavab m.eldehairy 08 apr tərəfindən verilir . 2015-04-08 17:20 '15 saat 17 : 20- da 2015-04-08 17:20
2
20 нояб. cavab 20 noyabr umairhhhs verilir 2013-11-20 23:05 '13 at 11:05 PM 2013-11-20 23:05

Bound NSView ilə əlaqəli olduğu halda, SuperView-a bağlayın.

Məsələn: X = 40, Y = 60. Həmçinin 3 Görünüş ehtiva edir. Bu diaqram sizə aydın bir fikir göstərir.

2019

2
17 дек. Cavab RAGHUNATH verilir 17 dekabr. 2015-12-17 10:31 '15 saat 10:31 'da 2015-12-17 10:31

Yuxarıdakı cavablar Bound və Frame arasındakı fərqləri çox yaxşı izah etdi.

Sərhədlər: Öz koordinat sisteminə görə ölçü və yeri göstər.

Çərçivə: obyektin ölçüsü və yeri SuperView ilə müqayisədə.

Bunda X, Y hər zaman "0" olacaqdır ki, qarışıqlıq var. Bu doğru deyil. Bu, UIScrollView və UICollectionView-da başa düşülə bilər.

X, y sərhədləri 0'a bərabər olmadıqda.
Bir UIScrollView var deyək. Pagination tətbiq etdik. UIScrollView 3 səhifə və ContentSize width - üç dəfə. Ekran genişliyi (ScreenWidth - 320 deyirlər). Hündürlük sabitdir (məsələn, 200).

 scrollView.contentSize = CGSize(x:320*3, y : 200) 

Müəyyən obyektlər kimi üç UIImageViews əlavə edin və çərçivənin x dəyərinə yaxından baxın

  let imageView0 = UIImageView.init(frame: CGRect(x:0, y: 0 , width : scrollView.frame.size.width, height : scrollView.frame.size.height)) let imageView1 : UIImageView.init( frame: CGRect(x:320, y: 0 , width : scrollView.frame.size.width, height : scrollView.frame.size.height)) let imageView2 : UIImageView.init(frame: CGRect(x:640, y: 0 , width : scrollView.frame.size.width, height : scrollView.frame.size.height)) scrollView.addSubview(imageView0) scrollView.addSubview(imageView0) scrollView.addSubview(imageView0) 
  1. Page 0: ScrollView 0-də olduğu zaman sərhədlər (x: 0, y: 0, genişlik: 320, yüksəklik: 200)

  2. Səhifə 1: Gedin və səhifə 1-ə gedin.
    İndi sərhədlər olacaq (x: 320, y: 0, genişlik: 320, hündürlüyü: 200). Öz Ordinal sistemimiz haqqında danışdığımızı unutmayın. Belə ki, indi ScrollView-in "görünən hissəsi" 320-də "x" var. İmageView1 çərçivəsinə baxın.

  3. Page 2: Gedin və səhifə 2-ə gedin Sərhədlər: (x: 640, y: 0, genişlik: 320, yüksəklik: 200) imageView2 çərçivəsinə bir baxın

Eyni UICollectionView ilə olur. Bir toplama görünüşünə baxmaq üçün en asan yol onunla dolaşmaq və sərhədlərini yazmaq / yazmaqdır və fikir əldə edirsiniz.

0
07 июня '18 в 21:16 2018-06-07 21:16 Cavab Məhəmməd Nayab tərəfindən 07 İyun '18 'də saat 21:16' də 2018-06-07 21:16 'də verildi

əlaqədar digər suallar və ya bir sual