先上效果,如下:忽略CSDN这个动画展示效果,掉帧严重,导致下面的动画不流畅。

上代码:

typedef NS_ENUM(NSInteger,UISpinnerAnimationViewAnimation)
{UISpinnerAnimationViewAnimationSpinner,//拖尾绕圈UISpinnerAnimationViewAnimationRador,  //雷达
};@interface UISpinnerAnimationView : UIView//画笔粗细,默认为6
@property (nonatomic,assign) CGFloat lineWidth;
//画笔轮廓颜色
@property (nonatomic,strong) UIColor *strokeColor;
//填充颜色,如使用雷达效果配置填充色
@property (nonatomic,strong) UIColor *fillColor;/* An object providing the contents of the layer, typically a CGImageRef* or an IOSurfaceRef, but may be something else. (For example, NSImage* objects are supported on Mac OS X 10.6 and later.) Default value is nil.* Animatable. */
@property (nonatomic,strong) UIImage *contentImage;//动画完成时间
@property (nonatomic,assign) CGFloat aniDuration;@property (nonatomic,assign) UISpinnerAnimationViewAnimation animationType;- (void)startAnimation;
- (void)stopAnimation;
@end

实现逻辑:


typedef void (^UIProgressHUDViewCompleteBlock)(void);
typedef UIView *(^UIProgressHUDInterfaceViewBlock)(void);@implementation UISpinnerAnimationView- (instancetype)initWithFrame:(CGRect)frame
{if ([super initWithFrame:frame]){self.lineWidth = 6;self.strokeColor = [UIColor colorWithRed:2.0/255.0 green:134.0/255.0 blue:224.0/255.0 alpha:1];self.animationType = UISpinnerAnimationViewAnimationSpinner;NSString *imageData = @"iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAQAAADTdEb+AAAgRklEQVR42u2da5skx1GFM2dXMhd/hf/IL0OSEVhYMiBkrgbMHQwG2bqstbqaL8ADlqzVTifd09PbVdV5iThxIqp60c6zM9Pd1ZfpfOfEyZORNTn9R5r/y4PLoyP4l6y3IPevX8oBPwf3fWBdUnOQ08+GDzF6SA/QmIPwPILlDdno1iElB7CSGq1MAg0ZkjV/77MLSn4/q/w4rV4NLx/B8kVrW7/f2wNre3pFoOEE1jbQioDpesDaZlEUXj6DFYdW/LCwSooFrOifhoMcfHkK1nUWwNY9mGWIDVbEa165KM7B+v9RAPGByc6/GM9RUVyC5TcD9JsvxQ1T3tivgm/mZcIsp8+uJlywFJZrACvChYUFEAewuA+5hreKUoB8ta/cuwxWcqzP6LReL0zPB1h8yAA+TmBFoRWL2TWBdT1eS3T0GSw/tCK81ddgRXkt4dFTsJgzwGidwo/W2GcNWJYpRV5Ru0ijPgfLK1xYz4lwHzFfyeuMsvDdHOuzkNxqLZ16fsDanoUf5FifbioS3TZk+epesZ+FH+ZYn6Z0xWihR6wF1tqIhaXwR7CYSZXXouwWBi1vGH7uors5jjiBtXYnw1aGigXWtWkXPTw9g7X9pRv7UGwTrKhyHrrUMwUrHq0Yr8IbrLzx17d2/DDLsT7F7rihEogpwhbBWgMxpxXEJVjXXgKZQ3d5RHYoY/EqFgJZTp8EbUndhmZtGaznqSTegeW329k3YY8cMh1Y14KYV1PNXY71iau7ii+BnsOXwxHafklsxg2f0I27rTjG4aQfnuxY/qIRc+7VmoIV3c6H6pdt2CypUr6i1xqhXd244RNS3OBj4lm/+9biZAeL9aq8nRapBXAJ1jbQitKBdcBaoziGd5bm9DFxTqg/zluzuDqQr+R1yo/wKol3YKUQtHQdDPwiwdCETNXTuKlH9GaLu7jh49ZNKxv3aAXwAGt7yhWE1UmxtjMn3NagXQNY62Zanbjh4w3EDTGQbQusKJhWixs+Js0JfdHKKyPGAmuLyuWykXUJlvZUtrbTY3hCxjhqeW0m2nQPRbUbeHxh5yJu+ChFrBPaU/a8AmwIWNtULt9eh+pmio+AErhOG599yKwDlkMQ38Ic0XwCthNYW0PLu8isA1ZMwd4AVlOwrA+4nSLoh1gOwGnbBVFMwRwsn1mhbxG0Duk2wPKYw3r7rMGs8CNaCfQrgjFDyQXLH3PvgmhchP7Q7W/lbNOuWzQiU17LdVh549/aOYAV0/MeUQS9dSNv8DWtgZVoEfpDcgn02ifMGs7tgOXrvbzalsWzwg+lWSp1VuhVBJGBjQErWq98lEucv0/B0j/MdoqgZgDxAc0hOG9nhmg6o9+HobNCW5LlDRQfrLUB8yuIw1nh42DrjlzrVXy0g5sDMLL7LP/tYaLW5Mfhs0Jvf6U/QvroGbpXBGC+rTTQrPAxoQRuNWTIJKXSguXxitbzWeCs8LF4VrhufsXUB1QvslF1+Bq6rZh0Nit8HGjd2f0LPIXwBctDQW29DwFrhY+lDJLcFgMtvyHdBlg83dLNGqkdpB+oSyBvkyrfsEsHC7t/NukN2/FxLb28AglnhR9Ad2TNC1G04tRCD9a6hZHRqUXpIP2Abt090MKN8rWAtWYAQY4apoqVzLq1HbRsxdALrAi/xcfK8FfsP1BZd595IVYGOZ7GGyxPz8fHihI11MBaK3KI0Co7ADn02bx0K8Rn5fRTQKc8zirjYdmRW61geWLG0C3rWWiE2nUEKwatrWmV/j45EOJY3SJjdVKs7c4LrWhJrvUEyxMvn3JIW9L5qTWxcHFYOGLsYZ/emkGFYqoYe/WQvlW1DtZ2zLtPGdwCWGuXwyDz/khQAhlNM3Fl0GeoZWAxniWuHLIaZ6pLOo/o5n09h4UOtnRwM6RUfnit4bLE5v0Rybyv47A8h1kDlhfKa7ssg3l/hKerRofl2RgjHcw4sKx4We0832UNzPsjYxG0ZFj+Yahu2LlgYcj5hKbWLAsw7+8D5t13O4VHwIAMvx4sy+Ozwgf/rRRC8/6+9FDQYVl6RrFlZr8hz4HPJcFLu8SDLOcAM8KjeX8f1inenzjBOxkwpzO6hQGWvUTaN29YyyE4I5wqlgdcnJkhYtq5SI3B4uLFi0xjc/eFeX/f0WFxexqY88A1wIqeI/ptpBAwktN7lYP8zzzDRAspTpdLy5Jjs1Kd9K+Fl8TzAlLEZd2B1bhpldODsNUK1RIrWKhe8VUrPne/N+/vaf2+C1zxaoUAkMOeyVO1XGOGs3l/D73rRuw7Q618wFpHtaKs+9C8vwegtA377qNWPY+Uh05qbdWKse4i8/4uqFO8VUMuWiwtqX3OBGQ9Z4iM1UICVOmu5/1dWhHkdr5zCiFn0BGwvLSLXQyNW+nbG1bfdXNYvh4LBcwCQ3Z/Bv9iGGLdl2DFBQ+65hkvtdIOfiY/Hl+15H+zwiVkWHqsZFYq9twQXxtk4aQDywcxdO1wxaWc81XviHWKDxcLLdyw61DITo9rMfKexRCE6hiQvqMqgriBl2Oma5bpX6fVFztYdhVDSqI8fUebkhVQTRWLCZddt2RoWQuh5BYNWAhsFu1iFkOGcV8EpO9AKHENvH5uaJ0LYmBkh8e0Y+UbjoJJVk4/EevUWgbeihYKgBwsH7iwLq1o49647ggWKHdhBh5BS14I59/ZwdLBhTitiBQLhSpPFYvrsTz36siWbnVQja8/Xc4d5cEwa61SSgy81/4cksf6iYvH8u9ysFt2vdZkUPcYNj6qq4HmsX5cZQ97QDZcHLQQDDCwOGURwSpm37NUue7B6twcApcnWnaoxmBFweXrsIhQHQPSH8sONMCFRQ/65F1fBLXXZNoj4VhxMiziZvr69XOwenfyaaKxLEYznVX9Gh1YdvViOCzu9lS5TuV6KUwgXly4vEuhFqjlrfg9JYBFlELq+Rl61+b0ttJjRXXB20uhDi8JGlmNJU+zsFLo2eE+8FhvY0RuICjl6FWuhKCtIyz39dWs6GB0eO0cLO0D+cMlCUjlyzc6ldGBpVU/yTKPNiBdK22veqy3TR5LO23lpVnjpZwRXrFgoeGDTbOYS89Kj/XvnVqJ48WJSrloSfFCwfLwWhb7zkuwdOXw7pYjWNocywsuuW713RZHq6To8HULbfLziEXVtn2qWMo7GfCKWtjRa5XkFo6yIRY+vhTCSLXBYuAV6bOkaEkDhPa1yH0wC8+YE3I3peqI2F/5b6Nq6YIXnmeNupXwMjguhLISaS+HWNMMI78iOawzWBCVxI34dhPPKYN9RG4UUDHLIefERbxlZgElS7Ai8GLCNSqGPbTGl+RgaRWsdY21EGJLOVSkemAxknheXCoPSaVojTWrfuwNdC95Z0QSnj4XL4S0ReZROczpR4N6yfVZnokW5q40mNwooUKd1hrpFctfPfNYPxLfIRYvWzHUh6G9y22w9MqFzQuZM0I/pPKlYoF3Nyz1eHY62LBCweKjxe5osCzdKIlogSWaUhKclt68I9k7jtUYLDtautwdNe9sdzWALad/lVZNYmBqbVeW9zhI0JJhNQVLgxamWMxCyO62ErFyBsvis9ApLK+ndBw4aLBqXboRHoeixe7BIm3lQsiogWUBzOfcpdq5oWSfzaio1bC5URzbnyfqPBYyHyTvutGSkNO/DIQNY5h1EhGOYsmd1eXXPljte47clpdi8ZIrvBjegyU/3NvKc4OHceLegqr13Y3gmKwy8WiC5emtLEDlOlgqe2YAzILXGK6x0+op1vS75bU34iPlTmtk3xll0NbHDvHQAsuKmE9zjfYUITrj3kalBZYWLtS4y8/eHtAQI7s1px9KKibRzFvXEPV5Vs+818rg5aUeWO379srhGC09VKwedjQXmB11BEt9N4eFHwwvi8u61KsaNNPrb0RHyTULd1j8zlAKTkvFwh+MbeftbksWk/b1amrXp7fcdG+VaZY1aGCXQdPcrxc3/NCsUR7ZvHYdUQNXrSe0p0MtsEaqNX2GfpuydoVQVwS5uboQuJz+WSF1tlCC5bfk51SWaJYEKA1YbdWy6BUrXkCNupqQE1jYg2AvRguYDC+9ZsnQummCdaPCCtUrTlsM1ldlIKEOltG4OQWoiGZJIoc6XDWgbgS4tSy8PGpA9YrhqljjLQLLf9aIOa6+3+rD1Uarrko3VcBqx/ZmhvplHKwEUjqqbOUwp3+y1VJnU4/3P+iKYa8InqG66UDWLohIIZTAZfNU1tEbHHsJFv7QzJVGreeS2Pjl2dr7YN1UoOoj1gOrfpIjTm7Fa30hjvcYrEhbby2Kta+ymWEbq+l3fcBGYLU1i7Me6D/jU5XCf1TJ3XrGXr6SOFKtOlipU/5uLsC6qYJ101wxHDksuVrZF5RdPFUNLOZD+qf1I9fV73robZyvlcA5Rg+qqNV0axmOtsGSqpVkqSbSUQ3u1wKL9bTcDi99WRz9Ha920HACZ/r1QfXam07oUPdXctuOr/yxQ0/lfTRgMV4aqwlHZ+bbRbHusm5mYJ2/e3Bxzbwkjh2WNLfSb4nnFUBSKfwH3oORAwu999LoVr8YTtE5fzyoXFdDq10Ica3y60lwGfdLsHye2j7v0EQSPcDqPfCXmrXUqQez786QnZ1WX6967kqzG9Dqo4JGUgMW+4XidlIeSkhC07rLWirVg7uPm2efLzWrhZUuDNXAlFcdm8ED/D1FBqOqOrqAPZoj1orhGasTTA8ncD1ogjVawpFECvpFmWAPNXrkI1hrvAhOwqu19cvo9NJtzdE6Y/TwGVgPJ6jV9KoVL1z2LaAWnZiQe42cHKy4H8Ii8PJAYuS15np1xOqF/f+HM7RuLhxW7y+xImGCdwblhCAbLN+Xr59Mj+eMc7c1TeBP2JygeuEOrOPnwzXLQjifC9aXbEYaxQ4MIspe4+n+bnsvCnhO/V9abLmupWod9ephenEP1DfuPr94r1sPKvNB6dzPrlAbHx0ZWJsSWeXjSlzY/PNStY569eIeq19Ov3QP18OFv5qn6yM3hb/2bY/GCmBtsYC2Zo9T9Tr5rINa/Ur6ZvrV/edv7C89mLirlklnqtLaCgW8yL+9ppfriGZdx04l8aBZ30y/nn5t//mFO3916ae8XdJVvc9nsL7+N/73G1+/BXrFuqZ/xelxyuy74//Dx+3+48v03/s/c/z2/vOXd5ePt5yPHD3iNn7iKwGrXBlupXNNWQB1+L+7+3+bnqYn6Yv0X+ln6bP95y/2l57ur93dH5EWgBXR8z0v72kTrL95jlSpgNo0x+r8sbvD6jZ9tVepz9P/7KH6z/3nz/eXvrq7fncH1vnj8tG0Olau/tc7GKwS9BhleG2pfj0hlWZQHT6e7j8OYH2Rfp7+d4/Vz/ffHcA6XH86ZgrWpXKVzqtg/YSbQxEDq2wAvgKXu/nX0sXq9g6gJ/uPX+yV6ov9/8/33z25K4ZP7zWrhVbpwlUMP9HWx+YerCgpLQ73KkJ9amnU0qafsDp6qyNYX+0/nuxV6hf7jy/2/7/cX/rqTrNu748q1ZJYd15F8Erxn30zhTOnv95IueMUuvZwlaajmqvVbqZXt/el8MkdWl/eY/XkvhTezjRrd6Fapfm8Y7DWKpYlGqz4iTNixccq1deqaRmcgnVE68kzrC7B2l08Tlu3xq7Lw+6HjuAZLL5EFtqxBdQpDKvTbPAM1gmtr2ZYncC6XSgWgpZWu0rQOw+Pe04/WKEEYmnOyO6OTbocq5NeTTXrWBKfzvSqXgzHaElNfQHfmYgxGijWD9yfyuILikKpiqgAzudtbbBun6H19JlqPZ2o1dNnWN12wJrPOSVFUZN+FYd3nHS/GlgR5k/rGTQGvTX/q0cLU9PeAmsO19P7a1pg7RaPnC4WfyRZF9PYlwCNKkuw/mp1Ky5/o2RBwjhYWKZWU7W6BOusWrcLtaqBtasoVmm8itErl4QShfRuk1HTgMUM6jQiXtRaNfJW9TI4d1hztJ5OlOt25q/m88Jd9XHrsWnpvm7tvBEvjS4BbBssvt3TSXWBbbqsCPb1qlYOz1+fVrEaa5a2IBblu8Eoi6RxP4Hls/hpL38joLTRwlivygKraUG8rRTB2wFW8oIowQpJu4rbGHbuk9NfBs3vNFJtteq9cKGFVk2xlmDNIVvqVRut1IVLj5fuHWN6LzFmfbA4swlGlKBVqxFYc7R2g2K4uwBrNyiEuwusRmBhquUXSRjHfg4Wb75g8VOSORGiVpdalSYA7J4t5ywN/G6G0vnzpXFfQrVbPJu0HOpVy5bW83xXOYP1F6s5Kn2Sjs8DU0OrSjXFKhXN2l0gVcPqUq9qupXMc0S/pJ7kuvpg+XgqOVCYXR+plQ6s3UydbheXtWBxVUsTRvjkXUUKFsNVYTgheiWfCY6NexusKUY1qC7B0hv4/gzRolkMxAAucvq+s6vCgdKWwFZxKUKw6i6rDlgLrLZmJVGmVYY/I6pZwbZ+BBYPp8gSONKq1AWrzGAZgVWqK4W7jsMaJ/HRJdEBsRpYFvtmBco+C2wXwbZ531WyrDKD5/b+/27yXa0Mjkph7TVx4NKm89x5Y2UR+vsEm14CiqDOsteQ0oBVL4ml663kYF3ihdh4z4Jo65S4S97/PGDWJ0+qMF8lC0VlccMSq9IEqzTng6O4Qa9Z+v4tTsoFzxpbYDEWZnQapfFVcqiSCKuWZpWKj6o5q7FeSRJ4KVz4aqIlRlUSMQfLq9UF8VVcfzUCq49WCywNVlbNKuL3x9dvCRk5gIUmGEh/gs9MMHUVQILVyGmVqk5psNJoVun+rF4BBNVt5fRnm7Tq7TePNx9MFRB2XdUqA7WqPVYizw2LQNs3YOeXYPlbdaaz0ulVuhjell6VKjhtpHaVR6hrlTSB12pWnNsSEnICi2PWUWdlLYJ2rOrFUAKWtBAm0+IOXhCtbgs08zn9acDsj++s2oWjKDOscfDQB60fMmiyrN5PtL7bUgJWA4s5+5OmK6O5DhoztLBqh6Q93ZJp1W6oVppSiGRasq4tzG0J6ZiCpWOymFQL7bXSoVW37tKZYRGBVaAZYd++y2MHfTnUq1VB6tkBLP78T6tTKFTIjDBVB3w3MPJ1xFpI7TrPxJwZ4t0PLK/V6cf6E+r8T4+UFCoJUPVhwgx8D6C6s9Ia9/qvApbCY03MvOC09MHyc1fxZbCN1djAt/DSI9XP3VGXxSyHTk7rBJZFo1hLzHLF0jisdkSahFC1wJLBlYbxqBQrVLE8l6lLO274YzekLN5KNxscOSx5IdQBJlWrUYqlxUryC8jwWga8LsHiI4VCJQ1FdVjJ8NoNv28doYka7AYeTeI9UvlSB2sbhh3vZagPkVSzUgeSMVjLa5JYr+q/DrZ+h00Y+QNYPkj5QSUz7ePsXWfiSyeWKKBiSWJSm2LZiqEBr5z+aJWEffwWjN2VHK3+vDAJoRrrWftRk0ixxlhptohx4ALxmoOF+Sv71ghEq7SKhVr4otYoXYbFUCxNE2Axj6PouiNYaDHUJ1dyqDDTzjTwdrBw446m8NYVxKIa747Pyul7YbNAFlQYWlg5xMAal0EuVly4KLPES7Bsi8sIVMz1QZ1ipQESWrCSaOnZU7Hk77LVaZVR3PA9g05JX5jmxy0CxBizwnE5TLNTER2/Hj7vZqdASsoyiM8Ki+iXzwaX/fRuZQoWt3VvZBWjCmHqzMOkyztLVHbiI2XzQQtWzGJoKYWl7rHeokYL4/lHMRVCa47VL4bJDFaiF8Jx4KBv/+PDVYkb3jLRiUGl0Sr94rOsGKYBDHqwkjhmsBVCfTEswAgZaTiDZdMpC1Qa067DSl4MZXChUFkKIVYMLZvE0HFfLOm8Rdxtg/ddsWeEo2I49llJDFYC/RUbLfsuHuJST05/GLR0oy2EOqxSc7A0PisJwwO9VkmwKsKfEIGKD9eAlSlYnlBhWtV7M0vSNc4w0EpOWBXRz9T6JcN1yxGuI1isHTdW0475K2kZlFn4BIOVQNs+Ln+s0AFVKyAszenNcKi4/krmsHQGPg3Q6d2Skq6jQeas1vdZSriWYHGhQrWKgxWuWhLIZPdD1crS8ufXAKiKG96EHBa3FCJdo0k8o9K4rCRUo34RZAWj8v53zfvqC9ezuOFNda4a569G2bNsXihBKylUSFf8pFghc0IkJPWAq0JQTn9AmQlK1wctHQ24edckWmloxqXHJyBmYJp3+dqsNH1XzBDnYDF7rvRapceKG5NiiCWVWtmjUc680CsqLZdgRUEVj9UYrT4cErBkauXrsPA+Bwe4DmCxF3B0jf1o1KCJSMd7o7WWPonL33jfs74M8kuhdYNYZUnn98OgYkUNaOAgCR2SSI/6x8m7GZCwgb204wTXHCwEKm5bHxsrtBxKnJPOV1nLYARadgtfLsEqRN0q6mv0ewm1K4ZStKxgJfOMUBc2yLuzeLoluHQAy9u2W1N3u4UfLe0kkU+SO6rRczFa/Epip+9UC5/T77k4LNsKIRcr+cphEhU2TelDkULQsq8aEl3WFCzW/mZOh/u4XURSCqXlkA8WKxgtoveC1wVP2jN9AovnsDjNyHKs7HqVVLqDeSpMs9ho+e07vLh0AMvDtnusEcqxQtYNuWAx1geZaIW7rJy+a14nLAS8pFih7TO6GeJltNky+b0QFE2vkHVC3p4d0n7pM1gRve3yJg+fhZ1xedLpkMasF+CVWtGy7t0xwHUCCymHBdQvG1aIfWfY+EQqgTqtKur3RIuWPChVeqzvus4GkQxL25GF6ZV80wUGli1mkEcNWrT0agV6rDeEHsuyD0fT4ajdpcPUrCT2S3Kk7KuDGtOOdpJy9vDMPNYbBo9lU61RR4NuUQfXLTleKFK4ViHRKHNzBfy3xE5gWQqgrgTKV7d4K4ZJqCBcsPz8VVG8c9g5SnW6VfVYb9CMOzPDYvVkccuiT/nz68XiuyyFx3rdTav4WGm8iIdu+WmV/GdaBy21bk3BYjT1RWMlwak/sBqoeFo1fsX2tuSoBL6xVvg6VACti88oVtyCqEXMS6sYRdByCkmrblU91usBW+i1rTJ6rDSGuCiv0YKFdraPe0VRtLz6HDrBQ07fMWiVL1ZIVxaywBMDljUU1cYNXLTUujUFy/MkRWibn6XlTw+TBBI9TvaQwdbvbtlrCK8cnsFiahWGla4MskKHpHRILD/FCEat53BgFcJqz/t33LSKj5Vmx469GOrBYidXCFQYWnTdyul3DcZ9Day028FwqHCwsOSKBZU3WqLv52AVs27xsJL2TUYURL5GMYIGbcDA3Gk4/P4MFroh1X76WmxvoS9ckWBZofJAy5JjlSlYHue/Ys4IPWeHa4HFmw3aZ4b082cdwNL+wR7bPkJ2SIrpVQ0KGSDjW+VbJdizQQ5aaElceKzXCNbduxhaOuCT2f9w3ZRNs2I8Fr6FtVyC5bl5QtePjSkVY3YYBZZlNmg5a7LPqmEjx3ot3GPhWDGK4ZpgrVcIWWgpPNZr5HaZGKykeoUMNBcs/dogK8FaE609WN9WWvd+/ZUuQCMNyr45fK9bamnJa9YcfzY9VLamZOykt8o9hlOw/Ntl/GeGdivfmtv15n3j1j2dXV9vRkhrnzmDtTZWeslHnZbNH9kfwctd+S3oAGgdwYqcEWqx0k27/Ww8DpaPZZdu/FoDrbtF6G8rqydnCZqdvlsKoRdY3OzKrxBql6FFMpTT75gXnllYxRRDFC4dWKx9ODGF0KF55gxW3GIOdlY/XK/0bscDLPteHMk7w+weNS3snMDS9TYwukfZ+3W03Q5a5dJu3EKVijUjLOBoMDavlhNYvBmhDStU+gsNLmugyoKqGN6NOLQ63+f022AJZGJl37zKTrZQPfNIreLUirgveg7WdWGFWnjcc/E9Fc+2bwytM1h+XaOyH1Z3Qp6ySklcqwQW+H3SnzSS1E16AsvvTA3M9mSrhbfCFQsVV62042PM3o9gFVo59FotxM5Nqi9DbLD0UGHnGuWuFNrPPLM376+CJZCBFX4StnVK4volEOtr4KClunYOFuKsfLDyDR5Q1VpfreKWcxACZub9VZOzsmNlVS3kjDRbAIuhWT6Zuw2tZ+b91c1i5bF2qMUJxQjVqDXUygWtI1j+WOFAcZFCAEL8mS4I9W3ss48SgNYBLPS8IowXzDDveCGMBYt3WjVWOWSg1QxIf4ucX/mZd77Xspl77HFivRWnqwHIs85gsReft+OyUNfDBIsXL8Q5LBNaJ7BYWHHWCz0XpS1zRZ/531rpld9fqyhHsHirhNaFHUZH6fWDxe4Y5S/mCFYMc/rWZrDymRvaQwif4mcthj6bVGlozcHiYrWey2LYeanx1t+Dq1nbcljlEqxtmXffHi2drujB8nBV7HPLuJv3bwVh5VEG7YWQlTzxcLL3XslAc0brCJbfnHA7erU9sLaiWS7zwgNYrIZkH6x0b66vdkXqFKNfdDWHdVCsVzZj3r1MPDbALLC8Iwb2zhyaeX+FjJX1VEaeemUNJDzDBF/Nsv4tHTVaJ7C27bJkbzt/tsjO0HWv0OcEayEO6wQWq21mK0s7Xr4rwk9taynH0DbzyipYIb9tcsjsGzA4XZ86bcLLoK4chqCV08tGrBj9WH6hA1e71tKpNYIG2/6HGVhsrDhlMKYc+oPlWwY9ztdgQusMlnFXBrDAydl4L7e+/EgCtejy6QdrMz3SKGBC6wQWC6uIzWC8soKVr9jSx+pw99kBXdqzwpddsfILSX2RYoWdW0SKe/bR0poVvuyAFf7D2ZekJfPFCNy0x+lOWSu5FHVmrMaSzkv0JR3WmRwiZofxYHlad6+zNUBLOi+5YeURknrixTtuu86KCdRgSeclNVYsd4Wd0clWSrYMlqUY6ruvuLPCi2tPYGGbVj1mhTy9uh6w1tAsz3OQlhNYflhZF3dYa4eSE1qzweqfTNx7bZCvVSpKDmDxsbL8vmDbwuyFkK9s/GLodYI1al/DyWP9ZgBW/jZ+KzNG/swvxrLT0TqDxe9xiNhvuAZk68DkvX+Q2DIzBYt/FtJ4Gx9VKP2L3bqWnXAG0pT+D9DyW48Ra0MyAAAAAElFTkSuQmCC";NSData *data = [[NSData alloc] initWithBase64EncodedString:imageData options:NSDataBase64DecodingIgnoreUnknownCharacters];UIImage *image = [UIImage imageWithData:data];self.contentImage = image;self.aniDuration = 1;[self.layer setMasksToBounds:YES];[self.layer setCornerRadius:frame.size.width / 2];[self.layer setBorderColor:[UIColor clearColor].CGColor];}return self;
}- (void)startAnimation
{if (self.animationType == UISpinnerAnimationViewAnimationSpinner){[self startSpinerAnimation];}else if (self.animationType == UISpinnerAnimationViewAnimationRador){[self startRadorAnimation];}
}- (void)startSpinerAnimation
{CGFloat lineWidth = self.lineWidth;CGPoint arcCenter = CGPointMake(self.frame.size.width / 2, self.frame.size.height / 2);UIBezierPath *smoothedPath = [UIBezierPath bezierPath];[smoothedPath addArcWithCenter:arcCenter radius:self.frame.size.width / 2 startAngle:0 endAngle:2 * M_PI clockwise:YES];CAShapeLayer *layer = [CAShapeLayer layer];[layer setContentsScale:UIScreen.mainScreen.scale];[layer setFrame:CGRectMake(0, 0, arcCenter.x * 2, arcCenter.y * 2)];[layer setFillColor:UIColor.clearColor.CGColor];[layer setStrokeColor:self.strokeColor.CGColor];[layer setLineWidth:lineWidth];[layer setLineCap:kCALineCapRound];[layer setLineJoin:kCALineJoinBevel];[layer setPath:smoothedPath.CGPath];[layer setMask:[CALayer layer]];layer.mask.contents = (__bridge id _Nullable)(self.contentImage.CGImage);[layer.mask setFrame:self.bounds];CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];animation.fromValue = [NSNumber numberWithFloat:0.0];animation.toValue = [NSNumber numberWithFloat:2 * M_PI];animation.duration = self.aniDuration;[animation setRemovedOnCompletion:NO];animation.repeatCount = HUGE_VALF;animation.autoreverses = NO;[layer addAnimation:animation forKey:@"rotate"];[self.layer addSublayer:layer];
}- (void)startRadorAnimation
{CGFloat lineWidth = self.lineWidth;CGPoint arcCenter = CGPointMake(self.frame.size.width / 2, self.frame.size.height / 2);UIBezierPath *smoothedPath = [UIBezierPath bezierPath];[smoothedPath addArcWithCenter:arcCenter radius:self.frame.size.width / 2 startAngle:0 endAngle:2 * M_PI clockwise:YES];CAShapeLayer *layer = [CAShapeLayer layer];[layer setContentsScale:UIScreen.mainScreen.scale];[layer setFrame:CGRectMake(0, 0, arcCenter.x * 2, arcCenter.y * 2)];[layer setFillColor:self.fillColor.CGColor];[layer setStrokeColor:self.strokeColor.CGColor];[layer setLineWidth:lineWidth];[layer setLineCap:kCALineCapRound];[layer setLineJoin:kCALineJoinBevel];[layer setPath:smoothedPath.CGPath];[layer setMask:[CALayer layer]];layer.mask.contents = (__bridge id _Nullable)(self.contentImage.CGImage);[layer.mask setFrame:self.bounds];CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];animation.fromValue = [NSNumber numberWithFloat:0.0];animation.toValue = [NSNumber numberWithFloat:2 * M_PI];animation.duration = self.aniDuration;[animation setRemovedOnCompletion:NO];animation.repeatCount = HUGE_VALF;animation.autoreverses = NO;[layer addAnimation:animation forKey:@"rotate"];[self setBackgroundColor:self.fillColor];[self.layer addSublayer:layer];
}- (void)stopAnimation
{dispatch_async(dispatch_get_main_queue(), ^{[[self.layer sublayers] enumerateObjectsUsingBlock:^(__kindof CALayer * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {[obj removeAllAnimations];}];});
}@end

使用方法:

CGFloat sz = MIN(self.view.bounds.size.width, self.view.bounds.size.height)/2;CGRect ft = CGRectMake((self.view.bounds.size.width-sz)/2, 120, sz, sz);UISpinnerAnimationView *c1View = [[UISpinnerAnimationView alloc] initWithFrame:ft];[c1View.layer setMasksToBounds:YES];[c1View.layer setCornerRadius:sz/2];[c1View setAnimationType:UISpinnerAnimationViewAnimationRador];[c1View setFillColor:[UIColor colorWithRed:2.0/255.0 green:134.0/255.0 blue:224.0/255.0 alpha:0.65]];[self.view addSubview:c1View];[c1View startAnimation];

OC 实现扫雷达扫描动画相关推荐

  1. android ar 动画,Android实现支付宝AR扫描动画效果

    支付宝AR扫描效果动画实现,具体内容如下 之前一个网友说想要一个支付宝扫描动画的效果demo,所以又花了点时间做了下这个东西,先看效果图 说一下实现的思路,如图中最外围的蓝色的是用两个相距180°的圆 ...

  2. 实现支付宝AR扫描动画效果

    实现支付宝AR扫描效果动画 之前一个网友说想要一个支付宝扫描动画的效果demo,所以又花了点时间做了下这个东西,先看效果图  说一下实现的思路,如图中最外围的蓝色的是用两个相距180°的圆弧实现的,再 ...

  3. SuperMap iObjects .NET 之雷达扫描动画

    作者:贤 目录 1. 介绍 2. 开发环境 3. 流程设计 3.1. 核心逻辑 3.2. 整体流程 4. 代码实现 4.1. 渐变填充雷达扫描区域的扇形 4.2. 定时器刷新实现雷达动态效果 5. 总 ...

  4. CSS3实现的雷达扫描动画js特效

    下载地址 CSS3实现的雷达扫描动画特效代码 dd:

  5. Android自定义View实现雷达扫描动画

    最近在项目中有用到雷达扫描动画,这个效果也常被用于扫描或定位等事件,通过一个小Demo对此进行一下总结. 动画截图如下: Android的动画分两类:一类是Tween动画,就是对场景里的对象不断的进行 ...

  6. 用Canvas在SurfaceView上绘制一个雷达扫描动画

    用Canvas在SurfaceView上绘制一个雷达扫描动画 目录 用Canvas在SurfaceView上绘制一个雷达扫描动画 目录 为什么选择SurfaceView 准备工作 构建MySurfac ...

  7. Android 指纹扫描动画实现,仿新版360手机助手欢迎页

    转载请标明出处:http://blog.csdn.net/edisonchang/article/details/49914553 最近看到360手机助手改版了,自己也装了一个,整体的体验还是比较不错 ...

  8. android 上下扫描动画,Android扫描雷达动画

    很简单的一个组合动画,用好基本动画啥子效果都不怕 老规矩先上图 效果图.gif ok 来 既然往下翻那就看看如何实现的吧 首先效果分为两部分 第一部分中间指针(其实这里就是一张图片) 第二部分就是波纹 ...

  9. Android 实现人脸识别检测时的扫描动画效果(二维码扫描动画效果同理)

    App现在二维码扫描.人脸扫描的场景越来越多,扫描的动画效果实则就是平移动画:TranslateAnimation 现在我呢用TranslateAnimation实现一个人脸扫描的效果,上下来回滑动( ...

  10. CE使用指南之扫雷棋盘扫描

    2.3第三次作业  "扫雷"游戏逆向分析 2.3.1棋盘内存地址范围 2.3.1.1 初级棋盘内存地址 1.取消"快速扫描",扫描类型选择"未知的初始 ...

最新文章

  1. Geant4采用make和cmake编译运行geant4自带例子的方法
  2. redis del清除缓存java_删除redis缓存报错
  3. postmessage and sendmessage
  4. IOS15的抽屉效果
  5. 结果显示窗口如何缩小_【操作教程】零基础如何学习PS与Sai?
  6. 【FTP】发布FTP服务器
  7. python结课设计力学方面_我对力学教案的评价
  8. 【设计模式之美】<Reading Notes>贫血模型与充血模型
  9. ACMer的AC福音!手动扩栈外挂!(防止栈溢出)
  10. java写的MySQL数据库备份和恢复代码:
  11. Oralce 日期操作
  12. EXTJS Date 的转换格式化字符
  13. Codeforces 1006 F - Xor-Paths
  14. AndroidStudio:Path is not a readable directory.
  15. PostgreSQL内核扩展之 - ElasticSearch同步插件
  16. python爬虫——使用selenium爬取qq群的成员信息(全自动实现自动登陆)
  17. opencv 模板匹配形状匹配
  18. Quartu编写D触发器
  19. 神策应用-概述认知(一)
  20. java实现中国象棋 源代码

热门文章

  1. 国防科技大学计算机专业戴眼镜,国防科技大学的男生毕业照流出,被女网友们狂赞:“把我扔进去”...
  2. 渗透工具SharpXDecrypt:Xshell全版本凭证一键恢复工具,针对Xshell全版本在本地保存的密码进行解密
  3. @Deprecated注解功能
  4. 什么人最适合读研呢?你适不适合读研究生?
  5. 计算机基础知识教程表格日期,excel表格如何进行日期加减
  6. 暮光之城破晓 - 看看会发生什么
  7. Python爬取电影天堂最新发布电影下载地址
  8. iOS HomeKit Quick Start iOS HomeKit快速入门 Lynda课程中文字幕
  9. 【Android开发经验】Android相关问题的好文章整理——温故而知新,可以为师矣
  10. 2017 苹果强制https