Skip to content

Commit

Permalink
优化+主页更新
Browse files Browse the repository at this point in the history
  • Loading branch information
sshiqiao committed Oct 22, 2018
1 parent e20059b commit 5a149af
Show file tree
Hide file tree
Showing 157 changed files with 1,197 additions and 990 deletions.
50 changes: 14 additions & 36 deletions Douyin.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -82,14 +82,13 @@
3B00F2ED210EE61900E99DE5 /* FavoriteView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B00F2EC210EE61900E99DE5 /* FavoriteView.m */; };
3B00F2F0210EE74100E99DE5 /* UserHomePageController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B00F2EF210EE74100E99DE5 /* UserHomePageController.m */; };
3B00F2F3210EE75D00E99DE5 /* UserInfoHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B00F2F2210EE75D00E99DE5 /* UserInfoHeader.m */; };
3B00F2F6210EE77600E99DE5 /* SlideTabBarFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B00F2F5210EE77600E99DE5 /* SlideTabBarFooter.m */; };
3B00F2F9210EE78F00E99DE5 /* AwemeCollectionCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B00F2F8210EE78F00E99DE5 /* AwemeCollectionCell.m */; };
3B00F2FC210EE7A700E99DE5 /* HoverViewFlowLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B00F2FB210EE7A700E99DE5 /* HoverViewFlowLayout.m */; };
3B193F7A217CAC4400517C93 /* BaseMessageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B193F79217CAC4400517C93 /* BaseMessageCell.m */; };
3B193F7D217D85BE00517C93 /* SlideTabBar.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B193F7C217D85BE00517C93 /* SlideTabBar.m */; };
3B2A3462210EC773005738DD /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B2A3461210EC773005738DD /* AppDelegate.m */; };
3B2A346A210EC775005738DD /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3B2A3469210EC775005738DD /* Assets.xcassets */; };
3B2A3470210EC775005738DD /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B2A346F210EC775005738DD /* main.m */; };
3B2A347A210EC775005738DD /* DouyinTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B2A3479210EC775005738DD /* DouyinTests.m */; };
3B2A3485210EC775005738DD /* DouyinUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B2A3484210EC775005738DD /* DouyinUITests.m */; };
3B2A3499210EC9A8005738DD /* awemes.json in Resources */ = {isa = PBXBuildFile; fileRef = 3B2A3493210EC9A7005738DD /* awemes.json */; };
3B2A349A210EC9A8005738DD /* comments.json in Resources */ = {isa = PBXBuildFile; fileRef = 3B2A3494210EC9A8005738DD /* comments.json */; };
3B2A349B210EC9A8005738DD /* groupchats.json in Resources */ = {isa = PBXBuildFile; fileRef = 3B2A3495210EC9A8005738DD /* groupchats.json */; };
Expand Down Expand Up @@ -269,24 +268,22 @@
3B00F2EF210EE74100E99DE5 /* UserHomePageController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UserHomePageController.m; sourceTree = "<group>"; };
3B00F2F1210EE75000E99DE5 /* UserInfoHeader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UserInfoHeader.h; sourceTree = "<group>"; };
3B00F2F2210EE75D00E99DE5 /* UserInfoHeader.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UserInfoHeader.m; sourceTree = "<group>"; };
3B00F2F4210EE76B00E99DE5 /* SlideTabBarFooter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SlideTabBarFooter.h; sourceTree = "<group>"; };
3B00F2F5210EE77600E99DE5 /* SlideTabBarFooter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SlideTabBarFooter.m; sourceTree = "<group>"; };
3B00F2F7210EE78100E99DE5 /* AwemeCollectionCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AwemeCollectionCell.h; sourceTree = "<group>"; };
3B00F2F8210EE78F00E99DE5 /* AwemeCollectionCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AwemeCollectionCell.m; sourceTree = "<group>"; };
3B00F2FA210EE79E00E99DE5 /* HoverViewFlowLayout.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HoverViewFlowLayout.h; sourceTree = "<group>"; };
3B00F2FB210EE7A700E99DE5 /* HoverViewFlowLayout.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HoverViewFlowLayout.m; sourceTree = "<group>"; };
3B193F78217CAC3400517C93 /* BaseMessageCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BaseMessageCell.h; sourceTree = "<group>"; };
3B193F79217CAC4400517C93 /* BaseMessageCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BaseMessageCell.m; sourceTree = "<group>"; };
3B193F7B217D85B300517C93 /* SlideTabBar.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SlideTabBar.h; sourceTree = "<group>"; };
3B193F7C217D85BE00517C93 /* SlideTabBar.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SlideTabBar.m; sourceTree = "<group>"; };
3B2A345D210EC773005738DD /* Douyin.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Douyin.app; sourceTree = BUILT_PRODUCTS_DIR; };
3B2A3460210EC773005738DD /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
3B2A3461210EC773005738DD /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
3B2A3469210EC775005738DD /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
3B2A346E210EC775005738DD /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
3B2A346F210EC775005738DD /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
3B2A3475210EC775005738DD /* DouyinTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DouyinTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
3B2A3479210EC775005738DD /* DouyinTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DouyinTests.m; sourceTree = "<group>"; };
3B2A347B210EC775005738DD /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
3B2A3480210EC775005738DD /* DouyinUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DouyinUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
3B2A3484210EC775005738DD /* DouyinUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DouyinUITests.m; sourceTree = "<group>"; };
3B2A3486210EC775005738DD /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
3B2A3493210EC9A7005738DD /* awemes.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = awemes.json; sourceTree = "<group>"; };
3B2A3494210EC9A8005738DD /* comments.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = comments.json; sourceTree = "<group>"; };
3B2A3495210EC9A8005738DD /* groupchats.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = groupchats.json; sourceTree = "<group>"; };
Expand Down Expand Up @@ -506,8 +503,8 @@
3B00F2EF210EE74100E99DE5 /* UserHomePageController.m */,
3B00F2F1210EE75000E99DE5 /* UserInfoHeader.h */,
3B00F2F2210EE75D00E99DE5 /* UserInfoHeader.m */,
3B00F2F4210EE76B00E99DE5 /* SlideTabBarFooter.h */,
3B00F2F5210EE77600E99DE5 /* SlideTabBarFooter.m */,
3B193F7B217D85B300517C93 /* SlideTabBar.h */,
3B193F7C217D85BE00517C93 /* SlideTabBar.m */,
3B00F2F7210EE78100E99DE5 /* AwemeCollectionCell.h */,
3B00F2F8210EE78F00E99DE5 /* AwemeCollectionCell.m */,
3B00F2FA210EE79E00E99DE5 /* HoverViewFlowLayout.h */,
Expand Down Expand Up @@ -548,6 +545,8 @@
3B00F2B1210EE2F800E99DE5 /* Emotion */,
3B00F2B5210EE34D00E99DE5 /* ChatListController.h */,
3B00F2B6210EE35A00E99DE5 /* ChatListController.m */,
3B193F78217CAC3400517C93 /* BaseMessageCell.h */,
3B193F79217CAC4400517C93 /* BaseMessageCell.m */,
3B00F2B8210EE36A00E99DE5 /* TimeCell.h */,
3B00F2B9210EE37400E99DE5 /* TimeCell.m */,
3B00F2BB210EE38300E99DE5 /* SystemMessageCell.h */,
Expand Down Expand Up @@ -592,8 +591,6 @@
isa = PBXGroup;
children = (
3B2A345F210EC773005738DD /* Douyin */,
3B2A3478210EC775005738DD /* DouyinTests */,
3B2A3483210EC775005738DD /* DouyinUITests */,
3B2A345E210EC773005738DD /* Products */,
1424B256CE8DECBC9655F029 /* Pods */,
76DDCE54F77DAC5BF7635A72 /* Frameworks */,
Expand Down Expand Up @@ -629,24 +626,6 @@
path = Douyin;
sourceTree = "<group>";
};
3B2A3478210EC775005738DD /* DouyinTests */ = {
isa = PBXGroup;
children = (
3B2A3479210EC775005738DD /* DouyinTests.m */,
3B2A347B210EC775005738DD /* Info.plist */,
);
path = DouyinTests;
sourceTree = "<group>";
};
3B2A3483210EC775005738DD /* DouyinUITests */ = {
isa = PBXGroup;
children = (
3B2A3484210EC775005738DD /* DouyinUITests.m */,
3B2A3486210EC775005738DD /* Info.plist */,
);
path = DouyinUITests;
sourceTree = "<group>";
};
3B2A3492210EC8C6005738DD /* Resource */ = {
isa = PBXGroup;
children = (
Expand Down Expand Up @@ -840,6 +819,7 @@
buildActionMask = 2147483647;
files = (
3B00F28A210EDFD600E99DE5 /* Visitor.m in Sources */,
3B193F7D217D85BE00517C93 /* SlideTabBar.m in Sources */,
3B00F281210EDF8500E99DE5 /* Video.m in Sources */,
3B00F28D210EDFEF00E99DE5 /* GroupChat.m in Sources */,
3B00F24D210EDBB100E99DE5 /* PostCommentRequest.m in Sources */,
Expand Down Expand Up @@ -889,10 +869,10 @@
3B00F2C9210EE40700E99DE5 /* EmotionSelector.m in Sources */,
3B00F253210EDCBF00E99DE5 /* BaseResponse.m in Sources */,
3B00F268210EDDA900E99DE5 /* CommentResponse.m in Sources */,
3B00F2F6210EE77600E99DE5 /* SlideTabBarFooter.m in Sources */,
3B00F226210ED8EB00E99DE5 /* NSAttributedString+Extension.m in Sources */,
3B00F232210EDA7C00E99DE5 /* BaseRequest.m in Sources */,
3B00F2D5210EE53700E99DE5 /* AVPlayerView.m in Sources */,
3B193F7A217CAC4400517C93 /* BaseMessageCell.m in Sources */,
3B00F287210EDFBC00E99DE5 /* Comment.m in Sources */,
3B00F2E7210EE5E900E99DE5 /* CommentsPopView.m in Sources */,
3B00F27B210EDF5000E99DE5 /* User.m in Sources */,
Expand Down Expand Up @@ -926,15 +906,13 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
3B2A347A210EC775005738DD /* DouyinTests.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
3B2A347C210EC775005738DD /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
3B2A3485210EC775005738DD /* DouyinUITests.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down Expand Up @@ -1089,7 +1067,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.douyin.demo;
PRODUCT_BUNDLE_IDENTIFIER = demo.douyin;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE = "";
PROVISIONING_PROFILE_SPECIFIER = "";
Expand All @@ -1111,7 +1089,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.douyin.demo;
PRODUCT_BUNDLE_IDENTIFIER = demo.douyin;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
TARGETED_DEVICE_FAMILY = "1,2";
Expand Down
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,16 @@
<Bucket
type = "0"
version = "2.0">
<Breakpoints>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.ExceptionBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
scope = "0"
stopOnStyle = "0">
</BreakpointContent>
</BreakpointProxy>
</Breakpoints>
</Bucket>
1 change: 0 additions & 1 deletion Douyin/AppDelegate.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,5 @@

@property (strong, nonatomic) UIWindow *window;


@end

52 changes: 14 additions & 38 deletions Douyin/AppDelegate.m
Original file line number Diff line number Diff line change
Expand Up @@ -6,69 +6,45 @@
// Copyright © 2018年 Qiao Shi. All rights reserved.
//

#import <Photos/Photos.h>
#import "AppDelegate.h"
#import "UserHomePageController.h"
#import "NetworkHelper.h"
#import "WebSocketManager.h"
#import "AVPlayerManager.h"

@interface AppDelegate ()

@end

@implementation AppDelegate


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = [[UINavigationController alloc]initWithRootViewController:[[UserHomePageController alloc] init]];
[self.window makeKeyAndVisible];

_window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen] bounds]];
_window.rootViewController = [[UINavigationController alloc] initWithRootViewController:[UserHomePageController new]];
[_window makeKeyAndVisible];

[NetworkHelper startListening];

[[WebSocketManager shareManager] connect];

[AVPlayerManager setAudioMode];

[self requestPermission];

return YES;
}

- (void)requestPermission {
[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
//process photo library request status.
}];
}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
[super touchesBegan:touches withEvent:event];

CGPoint touchLocation = [[[event allTouches] anyObject] locationInView:self.window];
CGRect statusBarFrame = [UIApplication sharedApplication].statusBarFrame;

if (CGRectContainsPoint(statusBarFrame, touchLocation)) {
[[NSNotificationCenter defaultCenter] postNotificationName:StatusBarTouchBeginNotification object:nil];
[[NSNotificationCenter defaultCenter] postNotificationName:@"StatusBarTouchBeginNotification" object:nil];
}
}

- (void)applicationWillResignActive:(UIApplication *)application {
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
}


- (void)applicationDidEnterBackground:(UIApplication *)application {
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}


- (void)applicationWillEnterForeground:(UIApplication *)application {
// Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
}


- (void)applicationDidBecomeActive:(UIApplication *)application {
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}


- (void)applicationWillTerminate:(UIApplication *)application {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}


@end
1 change: 0 additions & 1 deletion Douyin/Category/CADisplayLink+Tool.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
//

#import <UIKit/UIKit.h>
#import "objc/runtime.h"

typedef void(^ExecuteMethodBlock) (CADisplayLink *displayLink);

Expand Down
1 change: 1 addition & 0 deletions Douyin/Category/CADisplayLink+Tool.m
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
//

#import "CADisplayLink+Tool.h"
#import "objc/runtime.h"

@implementation CADisplayLink (Tool)

Expand Down
4 changes: 0 additions & 4 deletions Douyin/Category/NSAttributedString+Extension.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,7 @@
// Copyright © 2018年 Qiao Shi. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import <CoreText/CTFramesetter.h>
#import <CoreText/CTFont.h>
#import <CoreText/CTStringAttributes.h>

@interface NSAttributedString (Extension)

Expand Down
1 change: 1 addition & 0 deletions Douyin/Category/NSAttributedString+Extension.m
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
//

#import "NSAttributedString+Extension.h"

@implementation NSAttributedString (Extension)
//固定宽度计算多行文本高度,支持开头空格、自定义插入的文本图片不纳入计算范围,包含emoji表情符仍然会有较大偏差,但在UITextView和UILabel等控件中不影响显示。
- (CGSize)multiLineSize:(CGFloat)width {
Expand Down
1 change: 1 addition & 0 deletions Douyin/Category/NSDate+Extension.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
//

#import <Foundation/Foundation.h>

@interface NSDate (Extension)

+ (NSString *)formatTime:(NSTimeInterval)timeInterval;
Expand Down
2 changes: 2 additions & 0 deletions Douyin/Category/NSDate+Extension.m
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@
//

#import "NSDate+Extension.h"

@implementation NSDate (Extension)

+ (NSString *)formatTime:(NSTimeInterval)timeInterval {
NSDate *date = [NSDate dateWithTimeIntervalSince1970:timeInterval];
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
Expand Down
1 change: 0 additions & 1 deletion Douyin/Category/NSNotification+Extension.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
// Copyright © 2018年 Qiao Shi. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

@interface NSNotification (Extension)
Expand Down
1 change: 1 addition & 0 deletions Douyin/Category/NSNotification+Extension.m
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
//

#import "NSNotification+Extension.h"

@implementation NSNotification (Extension)

- (CGFloat)keyBoardHeight {
Expand Down
6 changes: 1 addition & 5 deletions Douyin/Category/NSString+Extension.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,8 @@
// Copyright © 2018年 Qiao Shi. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import <CommonCrypto/CommonDigest.h>
#import <CoreText/CTFramesetter.h>
#import <CoreText/CTFont.h>
#import <CoreText/CTStringAttributes.h>

@interface NSString (Extension)

- (CGSize)singleLineSizeWithAttributeText:(UIFont *)font;
Expand Down
8 changes: 5 additions & 3 deletions Douyin/Category/NSString+Extension.m
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,12 @@
//

#import "NSString+Extension.h"
@implementation NSString (Extension)
#import <CommonCrypto/CommonDigest.h>
#import <CoreText/CTFramesetter.h>
#import <CoreText/CTFont.h>
#import <CoreText/CTStringAttributes.h>

@implementation NSString (Extension)

//计算单行文本行高、支持包含emoji表情符的计算。开头空格、自定义插入的文本图片不纳入计算范围
- (CGSize)singleLineSizeWithAttributeText:(UIFont *)font {
Expand Down Expand Up @@ -72,7 +76,6 @@ - (CGSize)singleLineSizeWithText:(UIFont *)font{
return [self sizeWithAttributes:@{NSFontAttributeName:font}];
}


- (NSString *) md5 {
const char *str = [self UTF8String];
unsigned char digest[CC_MD5_DIGEST_LENGTH];
Expand Down Expand Up @@ -104,7 +107,6 @@ +(NSDictionary *)readJson2DicWithFileName:(NSString *)fileName {
return dic;
}


+ (NSString *)currentTime {
NSDate* date = [NSDate dateWithTimeIntervalSinceNow:0];
NSTimeInterval time = [date timeIntervalSince1970];
Expand Down
1 change: 1 addition & 0 deletions Douyin/Category/NSTextAttachment+Emotion.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
//

#import <UIKit/UIKit.h>

static char emotionKey;

@interface NSTextAttachment (Emotion)
Expand Down
1 change: 1 addition & 0 deletions Douyin/Category/UIImage+Extension.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
//

#import <UIKit/UIKit.h>

@interface UIImage (Extension)

- (UIImage *)drawRoundedRectImage:(CGFloat)cornerRadius width:(CGFloat)width height:(CGFloat)height;
Expand Down
Loading

0 comments on commit 5a149af

Please sign in to comment.