Saya belum pernah bekerja dengan batasan tata letak otomatis sebelumnya. Saya memiliki aplikasi kecil baru yang sedang saya kerjakan dan melihat bahwa tampilan NIB secara default menggunakan tata letak otomatis. Jadi, kupikir aku akan mengambil kesempatan untuk bekerja dengan itu dan mencoba untuk mencari tahu di mana Apple akan dengan ini.
Tantangan pertama:
Saya perlu mengubah ukuran MKMapView dan saya ingin menganimasikannya ke posisi baru. Jika saya melakukan ini dengan cara yang biasa saya lakukan:
[UIView animateWithDuration:1.2f
animations:^{
CGRect theFrame = worldView.frame;
CGRect newFrame = CGRectMake(theFrame.origin.x, theFrame.origin.y, theFrame.size.width, theFrame.size.height - 170);
worldView.frame = newFrame;
}];
... maka MKMapView akan 'kembali' ke ketinggian aslinya setiap kali tampilan saudara diperbarui (dalam kasus saya, judul UISegmentedControl sedang diperbarui [myUISegmentedControl setTitle:newTitle forSegmentAtIndex:0]
).
Jadi, apa yang saya pikir saya ingin lakukan adalah mengubah kendala dari MKMapView dari yang sama dengan hight induk pandangan untuk menjadi relatif terhadap bagian atas UISegmentedControl bahwa itu meliputi:V:[MKMapView]-(16)-[UISegmentedControl]
Yang saya inginkan adalah tinggi MKMapView dipersingkat sehingga beberapa kontrol di bawah tampilan peta terungkap. Untuk melakukannya, saya pikir saya perlu mengubah batasan dari tampilan ukuran penuh tetap ke tampilan di mana bagian bawah dibatasi ke atas UISegmentedControl ... dan saya ingin itu dianimasikan saat tampilan menyusut ke ukuran baru.
Bagaimana seseorang melakukan ini?
Sunting - animasi ini tidak beranimasi meskipun bagian bawah tampilan naik langsung ke 170:
[UIView animateWithDuration:1.2f
animations:^{
self.nibMapViewConstraint.constant = -170;
}];
dan nibMapViewConstraint
disambungkan di IB ke batasan Ruang Vertikal bawah.