Me AutoLayout
të aktivizuar, ne duhet FORGET FRAMES
dhe vetëm CONSIDER CONSTRAINTS
. Po, për animimin gjithashtu nuk mund të ndryshoni më kornizën ose qendrën, pamjet do të kthehen në pozicionin e tyre origjinal kur thirret faqosja.
Në vend të kësaj ju duhet consider changing the constant value of the constraint
për të marrë të njëjtin efekt.
Konsideroni një ndërfaqe përdoruesi si imazhi i dhënë më poshtë. Unë kam një pamje imazhi me një 20 points leading space from it's superview
që do të thotë se ka një kufizim hapësire horizontale me pamjen e tij të jashtme. Gjithashtu kam tre kufizime të tjera të bashkangjitura në pamjen e imazhit, sipër, gjerësi dhe lartësi.
Unë do t'ju tregoj se si mund ta animojmë imazhin nga e majta në të djathtë siç tregohet në imazh.
Krijo IBOutlet për kufizimet që duhet të animojmë. Këtu po marrim vetëm kufizim hapësinor horizontal, që mjafton për ta zhvendosur këtë pamje nga e majta në të djathtë.
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *horizontalSpaceConstraint;
Brenda veprimit Go Away
, duhet të përditësojmë vlerën konstante të këtij kufizimi.
- (IBAction)moveFrontAction:(id)sender {
self.horizontalSpaceConstraint.constant = 220;
[UIView animateWithDuration:0.5 animations:^{
[self.imageView layoutIfNeeded];
}];
}
Tani pamja duhet të zhvendoset në fundin e djathtë. Unë thjesht po e bëj këtë brenda një blloku animacioni, kështu që ne do të jemi në gjendje të shohim një animacion të bukur nga e majta në të djathtë dhe anasjelltas. Në prodhim, ne nuk duhet të kodojmë fort vlerat si p.sh. Kjo. Thjesht duke e bërë këtu për ta bërë të qartë konceptin.
Brenda veprimit Come Back
, ne po rivendosim përsëri konstantën në vlerën e saj origjinale, kështu që ju mund të shihni imazhin portokalli që animohet përsëri në vendndodhjen origjinale.
- (IBAction)moveBackAction:(id)sender {
self.horizontalSpaceConstraint.constant = 20;
[UIView animateWithDuration:0.5 animations:^{
[self.imageView layoutIfNeeded];
}];
}
12.11.2013