sách gpt4 ăn đã đi

iOS triển khai chức năng xóa ảnh thông qua CollectionView

In lại Tác giả: qq735679552 Thời gian cập nhật: 27-09-2022 22:32:09 28 4
mua khóa gpt4 giày nike

CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.

Bài viết blog CFSDN trên iOS này thực hiện chức năng xóa ảnh thông qua CollectionView được tác giả sưu tầm và sắp xếp. Nếu các bạn quan tâm đến bài viết này thì nhớ like nhé.

1. Vẽ hiệu ứng.

iOS triển khai chức năng xóa ảnh thông qua CollectionView

2. Bản vẽ kỹ thuật.

iOS triển khai chức năng xóa ảnh thông qua CollectionView

Ba, mã.

viewcontroller.h 。

?
1
2
3
4
5
6
7
8
9
10
11
12
#import
@giao diện viewcontroller : uiviewcontroller
{
  Giao diện người dùng *_collectionview;
  bộ điều khiển uiimagepicker *_imagepicker;
  nsmutablearray *ảnh;
  nsmutablearray *mảng dữ liệu;
  nsinteger xóa chỉ mục;
  bool lung lay;
}
@kết thúc

viewcontroller.m 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
// Khi nhấp vào nút thêm, dừng xóa.
#import "viewcontroller.h"
#import "photocollectionviewcell.h"
số nguyên hằng số ảnh = 8;
@giao diện viewcontroller()
@kết thúc
@implementation viewcontroller
- ( vô hiệu )xemđãtải {
  [siêu viewdidload];
  // thực hiện bất kỳ thiết lập bổ sung nào sau khi tải chế độ xem, thường là từ một nib.
  // Bố cục rất thú vị. Sau khi đặt kích thước ô của bạn, số lượng ô trong một hàng được xác định bởi chiều rộng của ô.
  uicollectionviewflowlayout *flowlayout = [[phân bổ uicollectionviewflowlayout]init];
  //Đặt kích thước của ô
  [kích thước mục thiết lập flowlayout:cgsizemake(70, 70)];
  // Đặt hướng bố cục của nó
  [flowlayout setscrolldirection:uicollectionviewscrolldirectionvertical];
  // Đặt đường viền cho nó (trên, trái, dưới, phải)
  flowlayout.sectioninset = uiedgeinsetsmake(5,5,5,5);
  _collectionview = [[phân bổ uicollectionview]initwithframe:cgrectmake(10, 50, 320,85*2) collectionviewlayout:flowlayout];
  _collectionview.datasource = bản thân;
  _collectionview.delegate = bản thân;
  _collectionview.backgroundcolor = [uicolor màu đỏ];
  [_collectionview registerclass:[photocollectionviewcell lớp học ] Forcellwithreuseidentifier:@ "ảnh" ];
  [self.view thêmsubview:_collectionview];
  ảnh = [[nsmutablearray alloc ] init];
  dataarray = [[phân bổ nsmutablearray] khởi tạo];
  [dataarray addobject:[uiimage imagenamed:@ "hợp đồng_thêmpic1" ]];
}
//phần
- (nsinteger)số phầntrongchế độ xem bộ sưu tập:(uicollectionview *)chế độ xem bộ sưu tập
{
  trở lại 1;
}
// số lượng mục
- (nsinteger)collectionview:(uicollectionview *)collectionview số mục trong phần:(nsinteger)section
{
  trở lại dataarray. đếm;
}
-(uicollectionviewcell *)collectionview:(uicollectionview *)collectionview cellforitematindexpath:(nsindexpath *)indexpath
{
  nslog (@ "--indexpath.row--%ld" ,indexpath. hàng);
  nslog (@ "---indexpath.section--%ld" ,indexpath. phần);
  photocollectionviewcell *cell = (photocollectionviewcell *)[collectionview dequeuereusablecellwithreuseidentifier:@ "ảnh" forindexpath:đường dẫn chỉ mục];
  cell.tag=indexpath.row;
  //hình ảnh
  cell.photoimage.image=dataarray[indexpath.row];
  // nút xóa
  cell.deletebtn.tag =indexpath.row;
  cell.deletebtn.hidden=có;
  [cell.deletebtn addtarget:self hành động:@selector(doclickdeletebutton:) forcontrolevents:uicontroleventtouchupinside];
  // Nút thêm
  nếu như (indexpath.row == mảng dữ liệu.count -1) {
   cell.addbtn.hidden = không;
  } khác
  {
   cell.addbtn.hidden = có;
  }
  [cell.addbtn addtarget:self hành động:@selector(doclickaddbutton:) forcontrolevents:uicontroleventtouchupinside];
  // Nhấn và giữ để xóa
  uilongpressgesturerecognizer *longpress = [[uilongpressgesturerecognizer phân bổ] initwithtarget:self hành động:@selector(longpressedaction)];
  [cell.contentview addgesturerecognizer:longpress];
  trở lại tế bào;
}
#pragma -mark -doclickactions
// Nút xóa
-( vô hiệu )doclickdeletebutton:(uibutton *)nút
{
  nslog (@ "-----doclickdeletebutton--------" );
  uialertview *alert = [[uialertview alloc ] initwithtitle:@ "gợi ý" tin nhắn:@ "Bạn có chắc chắn muốn xóa nó?" ủy nhiệm:self nút hủy tiêu đề:@ "Hủy bỏ" nút tiêu đề khác:@ "Chắc chắn" , không];
  deleteindex = thẻ btn;
  [hiển thị cảnh báo];
  nslog (@ "---xóa--mảng dữ liệu---%@" , mảng dữ liệu);
}
// Nút thêm
-( vô hiệu )doclickaddbutton:(uibutton *)btn
{
  nslog (@ "--doclickaddbutton--------" );
  nếu như (lắc lư) {
   // Nếu nó đang ở trạng thái chỉnh sửa, hãy hủy trạng thái chỉnh sửa
   [tự hủy bỏ];
  } khác {
   // Không ở trạng thái chỉnh sửa, thêm ảnh
   nếu như (dataarray.count > ảnh) {
    uialertview *alert = [[uialertview alloc ] initwithtitle:@ "gợi ý" tin nhắn:@ "Hỗ trợ lên tới 8" ủy nhiệm:self nút hủy tiêu đề:@ "Hủy bỏ" nút tiêu đề khác:@ "Chắc chắn" , không];
    [hiển thị cảnh báo];
   } khác
   {
    uiactionsheet *actionsheet = [[phân bổ uiactionsheet]
            initwithtitle:nil
            đại biểu:(id)self
            nút hủy tiêu đề:@ "Hủy bỏ"
            nút hủy diệttiêu đề:nil
            nút tiêu đề khác:@ "Bức ảnh" , @ "Album của tôi" ,không];
    actionsheet.actionsheetstyle = uiactionsheetstyleblackopaque;
    [actionsheet showinview:self.view];
   }
  }
  nslog (@ "---thêm--mảng dữ liệu---%@" , mảng dữ liệu);
}
// Nhấn và giữ để xóa
-( vô hiệu )hành động ép dài
{
  nslog (@ "-----hành động kéo dài--------" );
  lắc lư = có;
  nsarray *array = [_collectionview các chế độ xem phụ];
  ( số nguyên i = 0; i < mảng.count; i ++) {
    nếu như ([mảng[i] iskindofclass:[photocollectionviewcell lớp học ]]) {
    photocollectionviewcell *cell = mảng[i];
    nếu như (ô.addbtn.hidden) {
     cell.deletebtn.hidden = không;
    }
    khác
    {
     cell.deletebtn.hidden = có;
     cell.photoimage.image = [uiimage imagenamed:@ "đảm bảo" ];
     cell.tag = 999999;
    }
    // lắc hoạt hình
    [self animationviewcell:cell];
   }
  }
}
// Hủy lắc
-( vô hiệu )hủy bỏwobble
{
  lắc lư = không;
  nsarray *array = [_collectionview các chế độ xem phụ];
  ( số nguyên i = 0; i < mảng.count; i ++) {
   nếu như ([mảng[i] iskindofclass:[photocollectionviewcell lớp học ]]) {
    photocollectionviewcell *cell = mảng[i];
    cell.deletebtn.hidden = có;
    nếu như (cell.tag == 999999) {
     cell.photoimage.image = [uiimage imagenamed:@ "cộng" ];
    }
    // lắc hoạt hình
    [self animationviewcell:cell];
   }
  }
}
// lắc hoạt hình
-( vô hiệu )animationviewcell:(photocollectionviewcell *)cell
{
  //xích đu
  nếu như (lung lay){
   cell.transform = cgaffinetransformmakerotation(-0.1);
   [uiview hoạt hình với thời lượng: 0,08
         độ trễ: 0.0
        tùy chọn: uiviewanimationoptionrepeat|uiviewanimationoptionautoreverse|uiviewanimationoptionallowuserinteraction|uiviewanimationoptioncurvelinear
        hoạt hình:^{
         cell.transform = cgaffinetransformmakerotation(0.1);
        } hoàn thành:nil];
  }
  khác {
   [uiview hoạt hình với thời lượng: 0,25
         độ trễ: 0.0
        tùy chọn: uiviewanimationtùy chọntương tác người dùng thấp|uiviewanimationtùy chọnbắt đầu từ trạng thái hiện tại|uiviewanimationtùy chọncurveeaseout
        hoạt hình:^{
         cell.transform = cgaffinetransformidentity;
        } hoàn thành:nil];
  }
}
#pragma -mark -uiactionsheetdelegate
- ( vô hiệu )actionsheet:(uiactionsheet *)actionsheet clickedbuttonatindex:(nsinteger)buttonindex
{
  nếu như (nút chỉ số == 0) {
   [tự mở camera];
  } khác nếu như (nút chỉ số == 1) {
   [hình ảnh tự chụp];
  }
}
#pragma -mark -uialertviewdelegate
- ( vô hiệu )alertview:(uialertview *)alertview clickedbuttonatindex:(nsinteger)buttonindex
{
  nếu như (nút chỉ số == 1) {
   [mảng dữ liệu xóa đối tượng ở chỉ mục: xóa chỉ mục];
   nsindexpath *path = [nsindexpath indexpathforrow:deleteindex insection:0];
   [_collectionview xóa mục ở chỉ mục đường dẫn:@[đường dẫn]];
   // Nếu xóa xong, hủy chỉnh sửa
   nếu như (dataarray.count == 1) {
    [tự hủy bỏ];
   }
   // Nếu việc xóa chưa hoàn tất, hãy thực hiện hoạt ảnh lắc.
   khác
   {
    [tự nhấn hành động];
   }
  }
}
#pragma -mark -camera
//Mở máy ảnh
- ( vô hiệu )openCamera {
  nếu như ([uiimagepickercontroller issourcetypeavailable:uiimagepickercontrollersourcetypecamera])
  {
   nếu như (_imagepicker == không) {
    _imagepicker = [[uiimagepickercontroller phân bổ] khởi tạo];
   }
   _imagepicker.delegate = (id)self;
   _imagepicker.sourcetype = uiimagepickercontrollersourcetypecamera;
   _imagepicker.showscameracontrols = có;
   _imagepicker.allowsediting = có;
   [self.navigationcontroller presentviewcontroller:_imagepicker hoạt hình:có hoàn thành:nil];
  }
}
//Mở album ảnh
- ( vô hiệu )mở pic {
  nếu như (_imagepicker == không) {
   _imagepicker = [[uiimagepickercontroller phân bổ] khởi tạo];
  }
  _imagepicker.sourcetype = uiimagepickercontrollersourcetypephotolibrary;
  _imagepicker.allowsediting = có;
  _imagepicker.delegate = (id)self;
  [self presentviewcontroller:_imagepicker hoạt hình:có hoàn thành:null];
}
// Chọn ảnh
- ( vô hiệu )imagepickercontroller:(uiimagepickercontroller *)picker didfinishpickingmediawithinfo:(nsdictionary *)info{
  nsstring *mediatype = [thông tin objectforkey:uiimagepickercontrollermediatype];
  [_imagepicker quitviewcontrolleranimated:yes hoàn thành:null];
  _imagepicker = không có;
  // Xác định kiểu thu thập: hình ảnh
  nếu như ([kiểu phương tiện bằng chuỗi:@ "hình ảnh công khai" ]){
   uiimage *theimage = nil;
   // Xác định xem hình ảnh có được phép sửa đổi hay không
   nếu như ([picker cho phép chỉnh sửa]){
    //Lấy hình ảnh do người dùng chỉnh sửa
    theimage = [thông tin đối tượng cho khóa:uiimagepickercontrollereditedimage];
   } khác {
    //Thông số siêu dữ liệu của ảnh
    theimage = [thông tin đối tượng cho khóa:uiimagepickercontrolleroriginalimage] ;
   }
   [mảng dữ liệu chèn đối tượng:hình ảnh tại chỉ mục:0];
   nsindexpath *path = [nsindexpath indexpathforrow:0 phần trong:0];
   [_collectionview chèn các mục vào indexpaths:@[đường dẫn]];
  }
}
- ( vô hiệu )imagepickercontrollerđã hủy bỏ:(uiimagepickercontroller *)picker {
  [picker quitviewcontrolleranimated:yes hoàn thành:null];
}
// Xác định xem thiết bị có camera không
- ( bool ) có sẵn máy ảnh{
  trở lại [uiimagepickercontroller issourcetypeavailable:uiimagepickercontrollersourcetypecamera];
}
#pragma mark - Liên quan đến lựa chọn tệp Album
// Album ảnh có sẵn không?
- ( bool ) isphotolibraryavailable{
  trở lại [uiimagepickercontroller issourcetypeavailable: uiimagepickercontrollersourcetypephotolibrary];
}
- ( vô hiệu )đã nhận được cảnh báo bộ nhớ {
  [cảnh báo siêu nhận được bộ nhớ];
  // loại bỏ mọi tài nguyên có thể được tạo lại.
}
@kết thúc

photocollectionviewcell.h 。

?
1
2
3
4
5
6
#import
@giao diện photocollectionviewcell : uicollectionviewcell
@property (yếu, không phải nguyên tử) iboutlet uibutton *addbtn;
@property (yếu, không phải nguyên tử) iboutlet uiimageview *photoimage;
@property (yếu, không phải nguyên tử) iboutlet uibutton *deletebtn;
@kết thúc

photocollectionviewcell.m 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#import "photocollectionviewcell.h"
@implementation photocollectionviewcell
- (id)initwithframe:(cgrect)frame
{
  self = [siêu initwithframe:frame];
  nếu như (bản thân)
  {
   //Tải tệp Collectioncell.xib trong quá trình khởi tạo
   nsarray *arrayofviews = [[nsbundle mainbundle] Loadnibnamed:@ "photocollectionviewcell" chủ sở hữu:tùy chọn của bản thân:không];
   // Nếu đường dẫn không tồn tại, trả về nil
   nếu như (mảng số lượt xem < 1)
   {
    trở lại không;
   }
   // Nếu view trong xib không thuộc lớp uicollectionviewcell, trả về nil
   nếu như (![[mảng view objectatindex:0] iskindofclass:[uicollectionviewcell lớp học ]])
   {
    trở lại không;
   }
   //Tải ngòi
   self = [mảng chế độ xem đối tượng tại chỉ mục: 0];
  }
  trở lại bản thân;
}
- ( vô hiệu )thức dậy từ nib {
  // mã khởi tạo
}
@kết thúc

Tóm tắt.

Trên đây là phần giới thiệu của biên tập viên về chức năng xóa ảnh trên iOS thông qua Collectionview. Tôi hy vọng nó sẽ hữu ích cho bạn. Nếu có thắc mắc vui lòng để lại tin nhắn cho tôi và biên tập viên sẽ trả lời bạn sớm nhất. Tôi cũng xin cảm ơn mọi người đã ủng hộ trang web của tôi! .

Liên kết gốc: http://www.cnblogs.com/yang-guang-girl/archive/2017/11/23/7883117.html

Cuối cùng, bài viết về chức năng xóa ảnh của iOS thông qua CollectionView có tại đây. Nếu bạn muốn biết thêm về chức năng xóa ảnh của iOS thông qua CollectionView, vui lòng tìm kiếm bài viết CFSDN hoặc tiếp tục duyệt qua các bài viết liên quan. trong tương lai blog của tôi! .

28 4 0
qq735679552
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress