Not much to say, first piece look effect, cat share, must boutique
This small program mainly realizes the Click arrow key can let the icon move up and down and zoom in and out and rotate the function, click the picture will show another picture.
Click Transform
其实用到了按钮的两个状态,再State Config中的Default还有Highlighted的两个状态下background内容图片的设置
is actually a few states of the button:
Defaults: Default state
Highlighted: highlighted status when clicked
Selected: The state of being selected
Disabled: The state of the time when it cannot be used
Move
-(Ibaction) Move: (UIButton *) button {//Get frameCGRect frame = self.iconButton.frame;//Modify frame properties according to the type of button Switch(Button.tag) { CaseKmovingdirtop:/** Move Up * /FRAME.ORIGIN.Y-= -; Break; CaseKmovingdirbottom:/** Move Down * /FRAME.ORIGIN.Y + = -; Break; CaseKmovingdirleft:/** Move Left * /Frame.origin.x-= -; Break; CaseKmovingdirright:/** Move Right * /Frame.origin.x + = -; Break; }
This is the main method of implementation, the implementation method is actually many, this method is not the best, can refer to.
Here's what to note:frame
For the class UIView (UIButton and so on are inherited from him, can be seen on the phone display everything is this) has the property on the screen position and so on the most important properties are position and size.
We can enter the source code by holding command + left mouse button (CTRL+COMMAND+J)
By looking at the source code, we found that he defined three:
@property(nonatomicCGRect frame;@property(nonatomicCGRect bounds; @property(nonatomicCGPoint
Here are:
Frame: main tube position and size (when initialized, other times change to use below two)
Bounds: His dot is 0, main tube size
Center: Mostly point, decide position
Their type is
(struct struct) cgrect
structCGRect { CGPoint origin; CGSize size;};
And he includes point and size, of course, these two are also structs, and they know what they're doing. For example, Origin is:
struct CGPoint {/*决定在屏幕上xy坐标*/
CGFloat x;
CGFloat y;
};
And if you look again, CGFloat is a double.
# define CGFLOAT_TYPE double
Zoom Out function
//Zoom in and zoom out- (ibaction) Zoom: (UIButton*) button{//Remove bounds CGRectBounds = Self. Iconbutton. Bounds;if(Button. Tag){NSLog(@"Zoom In"); Bounds. Size. Width+= -; Bounds. Size. Height+= -; }Else{Bounds. Size. Width-= -; Bounds. Size. Height-= -;NSLog(@"Zoom Out"); }//Add animation //Animation start[UIViewBeginanimations:NilContextNil];//Set duration[UIViewSetanimationduration:1.0];//zoomed-out bounds back to the original button Self. Iconbutton. Bounds= bounds;//Submit animations[UIViewCommitanimations];}
Here I do not use a frame to modify, but to use the bounds property, in fact, is essentially the bottom of the cgsize just
Here in order to learn, I added a piece of animated code iOS animation is very human, stronger than Android more than 1:30 points. Be aware that you will have to take a look at the study, do not try, important things will generally be placed on the upper part of the code.
Rotation function
//rotate -(ibaction ) Rotate: (uibutton *) button{//rotation is mainly used in the angle, OC with radians cgfloat angle = (Button.tag )? M_pi_4:-m_pi_4; self .iconbutton .transform = cgaffinetransformrotate (self Span class= "hljs-variable" >.iconbutton .transform , Angle); nslog (@ "%@" , Nsstringfromcgaffinetransform (self Span class= "hljs-variable" >.iconbutton .transform );}
Well, the basic skills can be done. The rest of you can try it yourself, perfect. But do not slow down the pace of learning oh.
PS1. Need to learn the material can add me znycat
PS2. In order to learn, I will update at least (%d) a week, unknown. Times
Cat Learn iOS (i) UI button action Click Transform Move zoom in Zoom out rotation