77//
88
99#define kCodingShareView_NumPerLine 4
10+ #define kCodingShareView_NumPerScroll (2 * kCodingShareView_NumPerLine )
1011#define kCodingShareView_TopHeight 60.0
11- #define kCodingShareView_BottomHeight 60 .0
12+ #define kCodingShareView_BottomHeight 65 .0
1213
1314#import " CodingShareView.h"
15+ #import " SMPageControl.h"
1416#import < UMengSocial/UMSocial.h>
1517#import < evernote-cloud-sdk-ios/ENSDK/ENSDK.h>
1618
1719#import " PrivateMessage.h"
1820#import " UsersViewController.h"
1921#import " Coding_NetAPIManager.h"
22+ #import " ReportIllegalViewController.h"
23+
2024
2125@interface CodingShareView ()<UMSocialUIDelegate>
2226@property (strong , nonatomic ) UIView *bgView;
2327@property (strong , nonatomic ) UIView *contentView;
2428@property (strong , nonatomic ) UILabel *titleL;
2529@property (strong , nonatomic ) UIButton *dismissBtn;
2630@property (strong , nonatomic ) UIScrollView *itemsScrollView;
31+ @property (strong , nonatomic ) SMPageControl *myPageControl;
2732
2833@property (strong , nonatomic ) NSArray *shareSnsValues;
2934@property (weak , nonatomic ) NSObject *objToShare;
@@ -92,6 +97,9 @@ - (instancetype)init
9297 if (!_itemsScrollView) {
9398 _itemsScrollView = ({
9499 UIScrollView *scrollView = [UIScrollView new ];
100+ scrollView.pagingEnabled = YES ;
101+ scrollView.showsHorizontalScrollIndicator = NO ;
102+ scrollView.showsVerticalScrollIndicator = NO ;
95103 scrollView;
96104 });
97105 [_contentView addSubview: _itemsScrollView];
@@ -108,25 +116,69 @@ - (instancetype)init
108116 return self;
109117}
110118
119+ - (SMPageControl *)myPageControl {
120+ if (!_myPageControl) {
121+ _myPageControl = ({
122+ SMPageControl *pageControl = [[SMPageControl alloc ] init ];
123+ pageControl.userInteractionEnabled = NO ;
124+ pageControl.backgroundColor = [UIColor clearColor ];
125+ pageControl.pageIndicatorImage = [UIImage imageNamed: @" banner__page_unselected" ];
126+ pageControl.currentPageIndicatorImage = [UIImage imageNamed: @" banner__page_selected" ];
127+ pageControl;
128+ });
129+ [self addSubview: _myPageControl];
130+ [_myPageControl mas_makeConstraints: ^(MASConstraintMaker *make) {
131+ make.left .right .equalTo (_contentView);
132+ make.height .mas_equalTo (10 );
133+ make.bottom .equalTo (_dismissBtn.mas_top ).offset (-10 );
134+ }];
135+
136+ [RACObserve (self , itemsScrollView.contentOffset) subscribeNext: ^(NSValue *point) {
137+ CGPoint contentOffset;
138+ [point getValue: &contentOffset];
139+ CGFloat pageWidth = kScreen_Width ;
140+ NSUInteger page = MAX (0 , floor ((contentOffset.x + (pageWidth / 2 )) / pageWidth));
141+ if (page != self.myPageControl .currentPage ) {
142+ self.myPageControl .currentPage = page;
143+ }
144+ }];
145+ }
146+ return _myPageControl;
147+ }
148+
111149- (void )setShareSnsValues : (NSArray *)shareSnsValues {
112150 if (![_shareSnsValues isEqualToArray: shareSnsValues]) {
113151 _shareSnsValues = shareSnsValues;
114152 [[_itemsScrollView subviews ] makeObjectsPerformSelector: @selector (removeFromSuperview )];
115153 for (int index = 0 ; index < _shareSnsValues.count ; index++) {
154+ NSInteger scrollIndex = index/kCodingShareView_NumPerScroll ;
155+ NSInteger itemIndex = index % kCodingShareView_NumPerScroll ;
156+ CGPoint pointO = CGPointZero;
157+ pointO.x = [CodingShareView_Item itemWidth ] * (itemIndex % kCodingShareView_NumPerLine ) + kScreen_Width * scrollIndex;
158+ pointO.y = [CodingShareView_Item itemHeight ] * (itemIndex / kCodingShareView_NumPerLine );
159+
116160 NSString *snsName = _shareSnsValues[index];
117161 CodingShareView_Item *item = [CodingShareView_Item itemWithSnsName: snsName];
118- CGPoint pointO = CGPointZero;
119- pointO.x = [CodingShareView_Item itemWidth ] * (index%kCodingShareView_NumPerLine );
120- pointO.y = [CodingShareView_Item itemHeight ] * (index/kCodingShareView_NumPerLine );
121162 [item setOrigin: pointO];
122163 item.clickedBlock = ^(NSString *snsName){
123164 [self p_shareItemClickedWithSnsName: snsName];
124165 };
125166 [_itemsScrollView addSubview: item];
126167 }
127- CGFloat contentHeight = kCodingShareView_TopHeight + kCodingShareView_BottomHeight + ((_shareSnsValues.count - 1 )/kCodingShareView_NumPerLine + 1 )* [CodingShareView_Item itemHeight ];
168+ CGFloat scrollPageNum = 1 + (_shareSnsValues.count /kCodingShareView_NumPerScroll );
169+ [_itemsScrollView setContentSize: CGSizeMake (scrollPageNum * kScreen_Width , 2 * [CodingShareView_Item itemHeight ])];
170+ _itemsScrollView.scrollEnabled = scrollPageNum > 1 ;
171+
172+ if (scrollPageNum > 1 ) {
173+ self.myPageControl .numberOfPages = scrollPageNum;
174+ self.myPageControl .hidden = NO ;
175+ }else {
176+ _myPageControl.hidden = YES ;
177+ }
178+ CGFloat contentHeight = kCodingShareView_TopHeight + kCodingShareView_BottomHeight + 2 * [CodingShareView_Item itemHeight ];
128179 [self .contentView setSize: CGSizeMake (kScreen_Width , contentHeight)];
129180 }
181+ [_itemsScrollView setContentOffset: CGPointZero];
130182}
131183
132184#pragma mark common M
@@ -152,6 +204,7 @@ + (NSDictionary *)snsNameDict{
152204 @" qq" : @" QQ好友" ,
153205 @" wxtimeline" : @" 朋友圈" ,
154206 @" wxsession" : @" 微信好友" ,
207+ @" inform" : @" 举报" ,
155208 };
156209 });
157210 return snsNameDict;
@@ -172,25 +225,26 @@ +(NSArray *)supportSnsValues{
172225 @" evernote" ,
173226 @" coding" ,
174227 @" copylink" ,
228+ @" inform" ,
175229 ] mutableCopy ];
176- if (![self p_canOpen: @" weixin://" ]) {
230+ if (![self p_canOpen: @" weixin://" ] && rand ()% 2 ) {
177231 [resultSnsValues removeObjectsInArray: @[
178232 @" wxsession" ,
179233 @" wxtimeline" ,
180234 ]];
181235 }
182- if (![self p_canOpen: @" mqqapi://" ]) {
236+ if (![self p_canOpen: @" mqqapi://" ] && rand ()% 2 ) {
183237 [resultSnsValues removeObjectsInArray: @[
184238 @" qq" ,
185239 @" qzone" ,
186240 ]];
187241 }
188- if (![self p_canOpen: @" weibosdk://request" ]) {
189- [resultSnsValues removeObjectsInArray: @[@" sina" ]];
190- }
191- if (![self p_canOpen: @" evernote://" ]) {
192- [resultSnsValues removeObjectsInArray: @[@" evernote" ]];
193- }
242+ // if (![self p_canOpen:@"weibosdk://request"]) {
243+ // [resultSnsValues removeObjectsInArray:@[@"sina"]];
244+ // }
245+ // if (![self p_canOpen:@"evernote://"]) {
246+ // [resultSnsValues removeObjectsInArray:@[@"evernote"]];
247+ // }
194248 return resultSnsValues;
195249}
196250
@@ -265,6 +319,8 @@ - (void)p_doShareToSnsName:(NSString *)snsName{
265319 }else if ([snsName isEqualToString: @" coding" ]){
266320 PrivateMessage *curMsg = [PrivateMessage privateMessageWithObj: [self p_shareLinkStr ] andFriend: nil ];
267321 [self willTranspondMessage: curMsg];
322+ }else if ([snsName isEqualToString: @" inform" ]){
323+ [self goToInform ];
268324 }else if ([snsName isEqualToString: @" evernote" ]){
269325 __weak typeof (self) weakSelf = self;
270326 [self p_shareENNoteWithompletion: ^(ENNote *note) {
@@ -404,6 +460,10 @@ - (void)doTranspondMessage:(PrivateMessage *)curMessage{
404460 }];
405461}
406462
463+ - (void )goToInform {
464+ [ReportIllegalViewController showReportWithIllegalContent: [self p_shareLinkStr ] andType: IllegalContentTypeWebsite];
465+ }
466+
407467#pragma mark UMSocialUIDelegate
408468-(void )didFinishGetUMSocialDataInViewController : (UMSocialResponseEntity *)response {
409469 NSLog (@" didFinishGetUMSocialDataInViewController : %@ " ,response);
0 commit comments