【iOS】寒假OC开发项目知识点总结(不全)

打印 上一主题 下一主题

主题 779|帖子 779|积分 2337

第一个界面

InitViewController

1.定时器3步

  1.     NSTimer* myTimer = [NSTimer scheduledTimerWithTimeInterval:5  target:self selector:@selector(timeOut) userInfo:nil repeats:NO];
  2.     NSRunLoop *runloop = [NSRunLoop currentRunLoop]; //获取当前线程的runloop
  3.     [runloop addTimer:myTimer forMode:NSRunLoopCommonModes];    //将定时器添加到RunLoop中
复制代码
2。学会使用UIimageView 的动态展示方法

   

  • (void)animateWithDurationNSTimeInterval)duration animationsvoid (^)(void))animations completionvoid (^ __nullable)(BOOL
    finished))completion
  代码示例:
  1. - (void)imageViewRun {
  2.     //通过这个方法,你可以指定动画时长、动画效果、完成后的操作等。
  3.     [UIImageView animateWithDuration:2 animations:^{
  4.         self.beforeImageView.frame = CGRectMake((SIZE_WIDTH - 250) / 2 + 125, 280, 2.5, 0.6);
  5.     }completion:^(BOOL finished) {
  6.         self.beforeImageView.image = [UIImage imageNamed:@"image3.png"];
  7.         [self imageViewSecondRun];
  8.     }];
  9. }
复制代码
3。学会项目标整个初始化步调

  1. - (void)controllerInit {
  2.     HomeViewController *homeViewController = [[HomeViewController alloc] init];
  3.     GameViewController *gameViewController = [[GameViewController alloc] init];
  4.     ShareViewController *shareViewController = [[ShareViewController alloc] init];
  5.     PersonalViewController *personalViewController = [[PersonalViewController alloc] init];
  6.     UIColor *groundColor = [UIColor colorWithRed:(15.0f / 255.0f) green:(14.0f / 255.0f)blue:(18.0f / 255.0f) alpha:1.0f];
  7.    
  8.     homeViewController.view.backgroundColor = groundColor;
  9.     gameViewController.view.backgroundColor = groundColor;
  10.     shareViewController.view.backgroundColor = groundColor;
  11.     personalViewController.view.backgroundColor = groundColor;
  12.    
  13.     UINavigationController *homeNavigationController = [[UINavigationController alloc] initWithRootViewController:homeViewController];
  14.     UINavigationController *gameNavigationController = [[UINavigationController alloc] initWithRootViewController:gameViewController];
  15.     UINavigationController *shareNavigationController = [[UINavigationController alloc] initWithRootViewController:shareViewController];
  16.     UINavigationController *personalNavigationController = [[UINavigationController alloc] initWithRootViewController:personalViewController];
  17.     self.array = [NSArray arrayWithObjects:homeNavigationController, gameNavigationController, shareNavigationController, personalNavigationController, nil];
  18. UITabBarController *tabBarController = [[UITabBarController alloc] init];
  19.     tabBarController.viewControllers = self.array;
  20.     UIColor *titleColor = [UIColor colorWithRed:(85.0f / 255.0f) green:(83.0f / 255.0f)blue:(99.0f / 255.0f) alpha:1.0f];
  21.     tabBarController.tabBar.barTintColor = titleColor;
  22.     self.tabBarController.tabBar.translucent = NO;
  23.     UIColor *tabBarColor = [UIColor colorWithRed:(32.0f / 255.0f) green:(31.0f / 255.0f)blue:(38.0f / 255.0f) alpha:1.0f];
  24.     tabBarController.tabBar.backgroundColor = tabBarColor;
  25.     //推出视图
  26.     tabBarController.modalPresentationStyle = UIModalPresentationFullScreen;
  27.     tabBarController.selectedIndex = 2; //设置初始选项为第3个
  28.     [self presentViewController:tabBarController animated:YES completion:nil];
  29. }
复制代码
HomeViewController

1.UITabBarItem对象

1。可以此使用方法设置属性
   

  • (void)setTitleTextAttributesnullable NSDictionary<NSAttributedStringKey,id> *)attributes
    forStateUIControlState)state
  2。可以使用image,selectedImage两个属性,分别体现为选中状态下的图标和选中状态下的图标
使用示例:
  1.     UITabBarItem *tabBarItem = [[UITabBarItem alloc] init];
  2.     tabBarItem.title = @"主页";
  3.    
  4.     //下面这是 UITabBarItem 和 UIBarButtonItem 类的方法之一
  5.     //字体属性(Font Attributes):
  6.     //键:NSFontAttributeName
  7.     //值:UIFont 对象
  8.     //颜色属性(Color Attributes):
  9.     //键:NSForegroundColorAttributeName
  10.     //值:UIColor 对象
  11.     //阴影属性(Shadow Attributes):
  12.     //键:NSShadowAttributeName
  13.     //值:NSShadow 对象
  14.     [tabBarItem setTitleTextAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:13]} forState:UIControlStateNormal];
  15.     [tabBarItem setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor whiteColor], NSFontAttributeName:[UIFont systemFontOfSize:13]} forState:UIControlStateSelected];
  16.     [tabBarItem setTitlePositionAdjustment:UIOffsetMake(0, 10)];
  17.     [tabBarItem setImageInsets:UIEdgeInsetsMake(3, 0, -3, 0)]; //用于调整图标的插图,上左下右的偏移量
  18.     tabBarItem.image = [[UIImage imageNamed: @"zhuye.png"]imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal];//设置未选中状态下的图标
  19.     tabBarItem.selectedImage = [[UIImage imageNamed: @"zhuye2.png"]imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal];//设置选中状态下的图标
  20.     self.tabBarItem = tabBarItem;
复制代码
tabBarItem还有这两个方法:
  
  1. [tabBarItem setTitlePositionAdjustment:UIOffsetMake(0, 10)];
  2. [tabBarItem setImageInsets:UIEdgeInsetsMake(3, 0, -3, 0)];
复制代码
属性:
1.title
2.image
3.selectedImage
UIImageView

1.frame
2.image
3.tag
4.backgroundColor
5.userInteractionEnabled
6.contentMode:指定图像的显示模式。
7.isUserInteractionEnabled:指定是否允许用户与图像进行交互。
8.animationImages:指定要在动画中显示的一系列图像。可以将多个图像设置给 animationImages 属性,并通过调用 startAnimating 方法来开始动画。
9…layer.masksToBounds //设置是否剪裁多出来的部门
10…layer.cornerRadius. //设置圆角半径
常用方法:
startAnimating:开始播放动画,如果 animationImages 属性中有多个图像。
stopAnimating:制止播放动画。
isAnimating:检查图像视图是否正在播放动画。
initWithImage::使用给定的图像初始化 UIImageView 对象。
UIScrollView

1.backgroundColor
2.tag
3.delegate
4.scrollEnabeld //是否可以滚动
5.bounces //是否可以回弹
6.showsVerticalScrollIndicator / showsHorizontalScrollIndicator
7.contentSize //指定滚动内容的巨细
8.Masonry
9.contentOffset //指定当前滚动视图内容的偏移量。
10.contentInset //指定滚动内容的内边距
11.isPagingEnabled //指定是否启用分页滚动
常用方法:
scrollRectToVisible:animated::将指定的矩形地区滚动到可见地区,并可以选择是否使用动画结果。
setContentOffset:animated::将内容滚动到指定的偏移量,并可以选择是否使用动画结果。
zoomToRect:animated::将指定的矩形地区进行缩放,并可以选择是否使用动画结果。
flashScrollIndicators:显示滚动视图的滚动条指示器一段时间,以提示用户可以滚动内容。
UIButton

1.layer.masksToBounds //当 masksToBounds 设置为 YES 时,超出图层边界的内容将被裁剪掉,只显示在图层边界内的部门。
2.tag
3.backgroundColor
4.- (void)setImagenullable UIImage *)image forStateUIControlState)state; 方法
5.imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal]
6.layer.cornerRadius //设置圆角半径
7.frame
UITapGestureRecognizer

常用属性:
numberOfTapsRequired:一个整数值,指定需要识别的轻鼓掌势的点击次数。默认值为 1,体现单击手势。
numberOfTouchesRequired:一个整数值,指定需要识别的轻鼓掌势所需的触摸点数。默认值为 1,体现单指轻鼓掌势。
delegate:一个遵照 UIGestureRecognizerDelegate 协议的对象,用于处理手势识别器的委托方法。
常用方法:
init(target: Any?, action: Selector?):初始化手势识别器,并指定目标对象和相应方法。通过此初始化方法创建手势识别器对象,并指定在手势识别时调用的目标对象和相应方法。
require(toFail: UIGestureRecognizer):指定一个手势识别器,在另一个手势识别器识别失败时才能识别。通过调用此方法指定手势识别器的依靠关系,可以控制多个手势之间的相互影响。
location(in: UIView?):获取手势在指定视图坐标系中的位置。通过调用此方法,可以获取手势的位置,以便在相应方法中进行相应的处理。
UIAlertController / UIAlertAction (提示框)

三部曲:先创建一个UIAlertController,再创建初始化UIAlertAction,然后addAction,将AlertAction添加到AlertController中,末了讲Controller推出(present出去)
   

  • (instancetype)alertControllerWithTitlenullable NSString *)title messagenullable NSString *)message preferredStyleUIAlertControllerStyle)preferredStyle;
  • (instancetype)actionWithTitle:(nullable NSString *)title style:(UIAlertActionStyle)style handler:(void (^ __nullable)(UIAlertAction *action))handler;
  

  • (void)addAction:(UIAlertAction *)action;
  • (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^ __nullable)(void))completion
  UIImagePickerController

1.sourceType
UIImagePickerControllerSourceTypePhotoLibrary //相册
UIImagePickerControllerSourceTypeCamera, //相机
UIImagePickerControllerSourceTypeSavedPhotosAlbum
2.modalPresentationStyle 这个是Controller都有的属性
3.cameraCaptureMode
UIImagePickerControllerCameraCaptureModePhoto,
UIImagePickerControllerCameraCaptureModeVideo
4.delegate
// 实现 UIImagePickerControllerDelegate 委托协议中的方法
   

  • (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<UIImagePickerControllerInfoKey, id> *)info;
    这个方法中,info属性:
    valueForKey:方法
    [info valueForKey:UIImagePickerControllerEditedImage];
    UIImagePickerControllerEditedImage
    UIImagePickerControllerOriginalImage //这两个是相册常用的,下面是给录像用的
    UIImagePickerControllerMediaURL
    UIImagePickerControllerMediaType
    UIImagePickerControllerMediaURL
  第二个界面

UIBarButtonItem

//下方的叫tabBar
//上方的就叫Bar,
UIBarButtonItem:
上方导航栏添加垃圾箱按钮的示例
  1.     self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemTrash target:self action:@selector(pressDelete)];
复制代码
UICollectionViewFlowLayout / UICollectionView

  1.     UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
  2.     //布局方向为垂直流布局
  3.     layout.scrollDirection = UICollectionViewScrollDirectionVertical;
  4.     layout.itemSize = CGSizeMake(SIZE_WIDTH / 3 - 20, SIZE_WIDTH / 3 - 20);
复制代码
1.scrollDirection
2.itemSize
  1. self.collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 90, SIZE_WIDTH, SIZE_HEIGHT - 90) collectionViewLayout:layout];
  2.     self.collectionView.delegate = self;
  3.     self.collectionView.dataSource = self;
  4.     self.collectionView.backgroundColor = [UIColor clearColor];
  5.     [self.collectionView registerClass:[MyCollectionViewCell class] forCellWithReuseIdentifier:@"mainCell"];
  6.     [self.collectionView registerClass:[FirstCollectionViewCell class] forCellWithReuseIdentifier:@"firstCell"];
  7.     [self.collectionView registerClass:[PlusCollectionViewCell class] forCellWithReuseIdentifier:@"plusCell"];
  8.     [self addSubview:self.collectionView];
复制代码
1.用collectionViewLayout初始化collectionVIew
2.delegate
3.datasource
4.backgroundColor
5.frame
方法:注册cell


  • (void)registerClass:(nullable Class)cellClass forCellWithReuseIdentifier:(NSString *)identifier;
  • [self.collectionView registerClass:[MyCollectionViewCell class] forCellWithReuseIdentifier"mainCell"]; [self.collectionView registerClass:[FirstCollectionViewCell class] forCellWithReuseIdentifier"firstCell"]; [self.collectionView registerClass:[PlusCollectionViewCell class] forCellWithReuseIdentifier"plusCell"]; [self addSubview:self.collectionView];
实现UICollectionView的一系列协议函数
UILongPressGestureRecognizer

常用属性:
minimumPressDuration:长按的最小一连时间,即手指按住屏幕的时间超过该值才被认为是一次长按手势,默认值为0.5秒。
numberOfTouchesRequired:所需触摸数量,即需要的手指数量来触发长按手势,默认值为1。可以根据需要将其设置为大于1的值。
allowableMovement:允许移动的最大隔断,即手指在按住屏幕期间允许的最大移动隔断。如果手指移动的隔断超过此值,则不会触发长按手势。默认值为10点。
常用方法:
init(target: Any?, action: Selector?):初始化方法,用于创建一个UILongPressGestureRecognizer对象,并设置其目标(target)和相应方法(action)。
func location(in: UIView?) -> CGPoint:返回手指在指定视图坐标系中的位置。可以使用此方法获取手指相对于视图的坐标,以便在长按手势的处理方法中进行处理。
func cancelsTouchesInView() -> Bool:返回一个布尔值,指示当手势被识别时是否取消触摸变乱的传递。如果返回true,则手势识别器将取消触摸变乱的传递;如果返回false,则继续传递触摸变乱。默认值为true。
func require(toFail: UIGestureRecognizer):指定一个手势识别器,要求当前手势识别器在指定的手势识别器之前失败才能触发。可以使用此方法来创建手势之间的依靠关系。
使用示例:
  1.     //长按功能
  2.     self.longPressGestureRecognizer = [[UILongPressGestureRecognizer alloc] init];
  3.     self.longPressGestureRecognizer.minimumPressDuration = 0.5;
  4.     [self.longPressGestureRecognizer addTarget:self action:@selector(handleLongPressRecognizer:)];
  5.     [self.collectionView addGestureRecognizer:self.longPressGestureRecognizer];
  6. }
  7. //长按触发事件
  8. - (void)handleLongPressRecognizer:(UILongPressGestureRecognizer *)gesture{
  9.     switch (gesture.state) {
  10.         case UIGestureRecognizerStateBegan:{
  11.             NSIndexPath *path = [self.collectionView indexPathForItemAtPoint:[gesture locationInView:gesture.view]];
  12.             if(path == nil || path.item == 0 || path.item == self.photoArray.count + 1) {
  13.                 break;
  14.             }
  15.             [self.collectionView beginInteractiveMovementForItemAtIndexPath:path];
  16.         }
  17.             break;
  18.         case UIGestureRecognizerStateChanged:
  19.             [self.collectionView updateInteractiveMovementTargetPosition:[gesture locationInView:gesture.view]];
  20.             break;
  21.         case UIGestureRecognizerStateEnded:
  22.             [self.collectionView endInteractiveMovement];
  23.             break;
  24.         default:
  25.             [self.collectionView cancelInteractiveMovement];
  26.             break;
  27.     }
  28. }
复制代码
//设置collectionView的item是否可以移动
  1. - (BOOL)collectionView:(UICollectionView *)collectionView canMoveItemAtIndexPath:(NSIndexPath *)indexPath {
  2.     return YES;
  3. }
复制代码
//移动函数
  1. - (void)collectionView:(UICollectionView *)collectionView moveItemAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath*)destinationIndexPath {
  2.     id item = [self.photoArray objectAtIndex:sourceIndexPath.item - 1];
  3.     NSInteger movedItem = destinationIndexPath.item;
  4.     if (movedItem != 0 && movedItem != self.photoArray.count + 1) {
  5.         [self.photoArray removeObject:item];
  6.         [self.photoArray insertObject:item atIndex:destinationIndexPath.item - 1];
  7.     }
  8.     [self.collectionView reloadData];
  9. }
复制代码
//设置边距
//指定该节中每个单元格的内容将与其边界保持15点的隔断
  1. - (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section {
  2.     return UIEdgeInsetsMake(15, 15, 15, 15);
  3. }
复制代码
FMDB用法

  1. //FMDB初始化
  2. - (void)databaseInit {
  3.     NSString *photoDoc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
  4.     NSString *photoFileName = [photoDoc stringByAppendingPathComponent:@"photoData.sqlite"];
  5.     self.photoDataBase = [FMDatabase databaseWithPath:photoFileName];
  6.     if ([self.photoDataBase open]) {
  7.         BOOL result = [self.photoDataBase executeUpdate:@"CREATE TABLE IF NOT EXISTS photoData (photo BLOB NOT NULL);"];//BLOB:二进制大对象,用于存储二进制数据,在SQLite中,是不区分大小写的
  8.         if (result) {
  9.             NSLog(@"创表成功");
  10.         } else {
  11.             NSLog(@"创表失败");
  12.         }
  13.     }
  14. }
  15. //FMDB查询数据
  16. - (void)queryData {
  17.     if ([self.photoDataBase open]) {
  18.         // 1.执行查询语句
  19.         FMResultSet *photoResultSet = [self.photoDataBase executeQuery:@"SELECT * FROM photoData"];
  20.         // 2.遍历结果
  21.         while ([photoResultSet next]) {
  22.             NSData *imageData = [photoResultSet dataForColumn:@"photo"];
  23.             UIImage *image = [UIImage imageWithData: imageData];
  24.             [self.photoArray addObject:image];
  25.         }
  26.         [self.photoDataBase close];
  27.     }
  28. }
  29. //FMDB插入数据
  30. - (void)insertPhotoDataBase:(UIImage *)image {
  31.     NSData *imageData = UIImagePNGRepresentation(image);//用于将 UIImage 对象转换为 PNG 格式的原始数据。
  32.     if ([self.photoDataBase open]) {
  33.         BOOL result = [self.photoDataBase executeUpdate:@"INSERT INTO photoData (photo) VALUES (?);", imageData]; //insert into关键字, values(?,?),?是占位符
  34.         if (!result) {
  35.             NSLog(@"增加数据失败");
  36.         } else {
  37.             NSLog(@"增加数据成功");
  38.         }
  39.         [self.photoDataBase close];
  40.     }
  41. }
  42. //FMDB删除数据
  43. - (void)deletePhotoData:(UIImage *)image {
  44.     NSData *imageData = UIImagePNGRepresentation(image);
  45.     if ([self.photoDataBase open]) {
  46.         BOOL result = [self.photoDataBase executeUpdate:@"delete from photoData WHERE photo = ?", imageData];//关键词:delete from
  47.         if (!result) {
  48.             NSLog(@"数据删除失败");
  49.         } else {
  50.             NSLog(@"数据删除成功");
  51.         }
  52.         [self.photoDataBase close];
  53.     }
  54. }
复制代码
第三个界面

界面控件设计逻辑:
tableView设置在ScrollView上,然后SegmentedControl通过按钮方法,来控制scrollVeiew的contentOffset.x,反过来scrollView也通过contentOffset.x来反过来控制segmentedControl.selectedSegmentIndex
  1. - (void)pressSegmented{
  2.     if (_segmentedControl.selectedSegmentIndex == 0) {
  3.         [self.scrollView setContentOffset:CGPointMake(0, 0) animated:YES];
  4.     } else if (_segmentedControl.selectedSegmentIndex == 1) {
  5.         [self.scrollView setContentOffset:CGPointMake(SIZE_WIDTH, 0) animated:YES];
  6.     }
  7. }
  8. - (void)scrollViewDidScroll:(UIScrollView *)scrollView {
  9.     if (self.scrollView.contentOffset.x == 0) {
  10.         _segmentedControl.selectedSegmentIndex = 0;
  11.     } else if (self.scrollView.contentOffset.x == SIZE_WIDTH) {
  12.         _segmentedControl.selectedSegmentIndex = 1;
  13.     }
  14. }
复制代码
UISegmentedControl

1.frame
2.backgroundColor
3.tintColor
4.selectedSegmentTintColor. //被选中的栏的颜色
5.设置对一个状态下属性的方法
   

  • (void)setTitleTextAttributes:(nullable NSDictionary<NSAttributedStringKey,id> *)attributes forState:(UIControlState)state
  6.往SegmentedControl里添加元素
  1.     [self.segmentedControl insertSegmentWithTitle:@"目标share" atIndex:0 animated:YES];
  2.     [self.segmentedControl insertSegmentWithTitle:@"美图share" atIndex:1 animated:YES];
复制代码
7.设置SegmentedControl选项点击方法
  1. [self.segmentedControl addTarget:self action:@selector(pressSegmented) forControlEvents:UIControlEventValueChanged];
复制代码
8.设置当前选中的元素下标
  1. self.segmentedControl.selectedSegmentIndex = 1;
复制代码
下面这个总结的挺好的:
常用属性:
selectedSegmentIndex:当前选中的段索引。可以使用这个属性来获取当前选中的段的索引,大概通过设置它来改变选中的段。
numberOfSegments:段的数量。可以使用这个属性来获取 UISegmentedControl 中的段的数量。
tintColor:控件的颜色。可以使用这个属性来设置控件的颜色,包罗段的颜色和选中段的颜色。
isEnabled:控件是否启用。可以使用这个属性来设置控件是否相应用户的交互操作。
常用方法:
setTitle(_:forSegmentAt:设置指定索引处的段的标题。可以使用这个方法为特定索引的段设置标题。
setImage(_:forSegmentAt:设置指定索引处的段的图像。可以使用这个方法为特定索引的段设置图像。
setTitleTextAttributes(_:for:设置段的文本属性。可以使用这个方法为段的文本设置自界说属性,如字体、颜色等。
insertSegment(withTitle:at:animated:插入一个带有标题的新段。可以使用这个方法在指定位置插入一个新的段,并设置其标题。
removeSegment(at:animated:移除指定索引处的段。可以使用这个方法移除指定索引处的段。
addTarget(_:action:for:添加目标-动作对。可以使用这个方法为控件的特定变乱添加目标和对应的动作方法。
PhotoBrowseViewController

添加轻点和长按手势
  1.     UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(pressTapClick:)];   //轻点
  2.     UILongPressGestureRecognizer *longPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressClick:)];   //长按
  3.         [self.photoBrowseView addGestureRecognizer:tapGestureRecognizer];
  4.     [self.photoBrowseView addGestureRecognizer:longPressGesture];
复制代码
轻点和长按方法实现
  1. //轻点
  2. - (void)pressTapClick:(UITapGestureRecognizer *)tapGestureRecognizer {
  3.     [self dismissViewControllerAnimated:YES completion:nil];
  4. }
  5. //长按
  6. - (void)longPressClick:(UILongPressGestureRecognizer *)press {
  7.     UIAlertController * alert = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];
  8.     UIAlertAction * save = [UIAlertAction actionWithTitle:@"保存到相册" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
  9.         //保存图片
  10.         [self loadImageFinished:self.shareImage];
  11.     }];
  12.     //取消按钮
  13.     UIAlertAction * cancel = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
  14.     }];
  15.     //添加各个按钮事件
  16.     [alert addAction:save];
  17.     [alert addAction:cancel];
  18.     //弹出sheet提示框
  19.     [self presentViewController:alert animated:YES completion:nil];
  20. }
复制代码
保存图片到相册
  1. //保存图片到相册
  2. - (void)loadImageFinished:(UIImage *)image {
  3.     UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
  4.     self.saveAlertController = [UIAlertController alertControllerWithTitle:nil message:@"已保存到相册" preferredStyle:UIAlertControllerStyleAlert];
  5.     [self presentViewController:self.saveAlertController animated:YES completion:nil];
  6.     NSTimer* myTimer = [NSTimer scheduledTimerWithTimeInterval:1  target:self selector:@selector(timeOut) userInfo:nil repeats:NO];
  7.     NSRunLoop *runloop = [NSRunLoop currentRunLoop];
  8.     [runloop addTimer:myTimer forMode:NSRunLoopCommonModes];
  9. }
复制代码
  1. UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil); //   
复制代码
  UIImageWriteToSavedPhotosAlbum 方法接受四个参数:
// image:要保存的图像对象。
// completionTarget:保存完成后的回调目标对象。
// completionSelector:保存完成后的回调方法,用于处理保存结果。
// contextInfo:上下文信息,可以是任意对象。
  PhotoFixView

UIActivityIndicatorView小菊花



  • (void)activityIndicatorInit {
    self.activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleLarge];
    [self.mainImageView addSubview:self.activityIndicator];
    //设置小菊花的frame
    self.activityIndicator.frame = CGRectMake((SIZE_WIDTH - 40) / 2 - 100, (SIZE_HEIGHT - 400) / 2 - 100, 200, 200);
    self.activityIndicator.transform = CGAffineTransformMakeScale(1.7f, 1.7f);//用来设置 UIActivityIndicatorView 的缩放变更 x轴y轴都当大1.7倍
    [self.activityIndicator startAnimating];
    //设置小菊花颜色
    self.activityIndicator.color = [UIColor whiteColor];
    //设置背景颜色
    self.activityIndicator.backgroundColor = [UIColor clearColor];
    //刚进入这个界面会显示控件,并且制止旋转也会显示,只是没有在转动而已,没有设置大概设置为YES的时候,刚进入页面不会显示
    self.activityIndicator.hidesWhenStopped = NO;
    }

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

渣渣兔

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表