Skip to content

Commit 3a93647

Browse files
committed
在aside模式下,图片可以根据原始比例显示,并且宽度撑满父容器
1 parent 25cef1b commit 3a93647

12 files changed

+71
-11
lines changed

JSQMessagesDemo/DemoModelData.m

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,11 @@ - (void)loadFakeMessages
103103
displayName:@""
104104
media:photoItem];
105105

106+
JSQPhotoMediaItem *photoItem2 = [[JSQPhotoMediaItem alloc] initWithImage:[UIImage imageNamed:@"testimage"]];
107+
JSQMediaMessage *photoMessage2 = [JSQMediaMessage messageWithSenderId:@""
108+
displayName:@""
109+
media:photoItem2];
110+
106111
self.messages = [[NSMutableArray alloc] initWithObjects:
107112
[[JSQTextMessage alloc] initWithSenderId:kJSQDemoAvatarIdSquires
108113
senderDisplayName:kJSQDemoAvatarDisplayNameSquires
@@ -143,6 +148,7 @@ - (void)loadFakeMessages
143148
date:[NSDate date]
144149
text:@"It is simple, elegant, and easy to use. There are super sweet default settings, but you can customize like crazy."],
145150
photoMessage,
151+
photoMessage2,
146152
nil];
147153

148154
[self addPhotoMediaMessage];
Loading
Loading
Loading
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{
2+
"images" : [
3+
{
4+
"idiom" : "universal",
5+
"scale" : "1x",
6+
"filename" : "5457100623135b046300007e_普1.jpg"
7+
},
8+
{
9+
"idiom" : "universal",
10+
"scale" : "2x",
11+
"filename" : "5457100623135b046300007e_普1-1.jpg"
12+
},
13+
{
14+
"idiom" : "universal",
15+
"scale" : "3x",
16+
"filename" : "5457100623135b046300007e_普1-2.jpg"
17+
}
18+
],
19+
"info" : {
20+
"version" : 1,
21+
"author" : "xcode"
22+
}
23+
}

JSQMessagesViewController/Layout/JSQMessagesCollectionViewFlowLayout.m

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -428,6 +428,9 @@ - (CGSize)messageBubbleSizeForItemAtIndexPath:(NSIndexPath *)indexPath
428428

429429
if ([messageItem isMediaMessage]) {
430430
finalSize = [[messageItem media] mediaViewDisplaySize];
431+
if ([messageItem isAsideMessage]) {
432+
finalSize = CGSizeMake(self.itemWidth, finalSize.height * self.itemWidth / finalSize.width);
433+
}
431434
}
432435
else {
433436
CGSize avatarSize = [self jsq_avatarSizeForIndexPath:indexPath];

JSQMessagesViewController/Model/JSQMessage.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@
5252
*/
5353
@property (assign, nonatomic, readonly) BOOL isMediaMessage;
5454

55+
@property (assign, nonatomic, readonly) BOOL isAsideMessage;
56+
5557
#pragma mark - Initialization
5658

5759
/**

JSQMessagesViewController/Model/JSQMessage.m

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,12 @@ - (void)dealloc
5555
_date = nil;
5656
}
5757

58+
#pragma mark - Property
59+
60+
- (BOOL)isAsideMessage {
61+
return [self.senderId length] == 0;
62+
}
63+
5864
#pragma mark - NSObject
5965

6066
- (BOOL)isEqual:(id)object

JSQMessagesViewController/Model/JSQMessageData.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@
7575
*/
7676
- (BOOL)isMediaMessage;
7777

78+
- (BOOL)isAsideMessage;
79+
7880
@optional
7981

8082
/**

JSQMessagesViewController/Model/JSQPhotoMediaItem.m

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,17 @@ - (UIView *)mediaView
9090
return self.cachedImageView;
9191
}
9292

93+
- (CGSize)mediaViewDisplaySize
94+
{
95+
CGSize displaySize = [super mediaViewDisplaySize];
96+
if (self.appliesMediaViewMaskByType == JSQMessageDisplayAside) {
97+
CGFloat imageWidth = self.image.size.width;
98+
CGFloat imageHeight = self.image.size.height;
99+
displaySize = CGSizeMake(imageWidth, imageHeight);
100+
}
101+
return displaySize;
102+
}
103+
93104
#pragma mark - NSObject
94105

95106
- (BOOL)isEqual:(id)object

JSQMessagesViewController/Views/JSQMessagesCollectionViewCellAside.m

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,13 @@ - (void)awakeFromNib
1919
self.cellBottomLabel.textAlignment = NSTextAlignmentLeft;
2020
}
2121

22+
- (void)setMediaView:(UIView *)mediaView
23+
{
24+
[super setMediaView:mediaView];
25+
if ([self.mediaView isKindOfClass:[UIImageView class]]) {
26+
UIImageView *imageView = (UIImageView *)self.mediaView;
27+
imageView.contentMode = UIViewContentModeScaleToFill;
28+
}
29+
}
30+
2231
@end

JSQMessagesViewController/Views/JSQMessagesCollectionViewCellAside.xib

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,13 @@
3535
<nil key="highlightedColor"/>
3636
</label>
3737
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="fxB-Fv-MvE" userLabel="Bubble container">
38-
<rect key="frame" x="38" y="40" width="244" height="94"/>
38+
<rect key="frame" x="0.0" y="40" width="320" height="94"/>
3939
<subviews>
4040
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="fya-Xd-QVR" userLabel="Bubble Image View">
41-
<rect key="frame" x="0.0" y="0.0" width="244" height="94"/>
41+
<rect key="frame" x="0.0" y="0.0" width="320" height="94"/>
4242
</imageView>
43-
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="DJt-qX-bTo" customClass="JSQMessagesCellTextView">
44-
<rect key="frame" x="0.0" y="0.0" width="238" height="94"/>
43+
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" placeholderIntrinsicWidth="90" placeholderIntrinsicHeight="94" translatesAutoresizingMaskIntoConstraints="NO" id="DJt-qX-bTo" customClass="JSQMessagesCellTextView">
44+
<rect key="frame" x="115" y="0.0" width="90" height="94"/>
4545
<color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
4646
<fontDescription key="fontDescription" type="system" pointSize="14"/>
4747
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
@@ -50,11 +50,11 @@
5050
<color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
5151
<constraints>
5252
<constraint firstItem="fya-Xd-QVR" firstAttribute="top" secondItem="fxB-Fv-MvE" secondAttribute="top" id="TaT-Dh-qCD"/>
53-
<constraint firstItem="DJt-qX-bTo" firstAttribute="leading" secondItem="fxB-Fv-MvE" secondAttribute="leading" id="Vim-Mp-2J5"/>
53+
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="DJt-qX-bTo" secondAttribute="trailing" id="UWX-hN-ERB"/>
54+
<constraint firstAttribute="centerX" secondItem="DJt-qX-bTo" secondAttribute="centerX" id="V3d-jo-5JY"/>
5455
<constraint firstAttribute="bottom" secondItem="DJt-qX-bTo" secondAttribute="bottom" id="axz-VT-hEB"/>
56+
<constraint firstItem="DJt-qX-bTo" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="fxB-Fv-MvE" secondAttribute="leading" id="dfy-bc-DVu"/>
5557
<constraint firstItem="fya-Xd-QVR" firstAttribute="leading" secondItem="fxB-Fv-MvE" secondAttribute="leading" id="dfz-HB-adw"/>
56-
<constraint firstAttribute="trailing" secondItem="DJt-qX-bTo" secondAttribute="trailing" constant="6" id="giQ-io-uKL"/>
57-
<constraint firstAttribute="width" constant="244" id="ogF-G0-KfQ"/>
5858
<constraint firstItem="DJt-qX-bTo" firstAttribute="top" secondItem="fxB-Fv-MvE" secondAttribute="top" id="pev-xk-GyL"/>
5959
<constraint firstAttribute="bottom" secondItem="fya-Xd-QVR" secondAttribute="bottom" id="r8G-83-cO2"/>
6060
<constraint firstAttribute="trailing" secondItem="fya-Xd-QVR" secondAttribute="trailing" id="tHH-GO-ObI"/>
@@ -78,13 +78,14 @@
7878
<constraint firstItem="F9F-0m-1GQ" firstAttribute="leading" secondItem="Xh3-Vh-J7A" secondAttribute="leading" id="7XD-iT-f6i"/>
7979
<constraint firstItem="ouD-TQ-VwT" firstAttribute="leading" secondItem="Xh3-Vh-J7A" secondAttribute="leading" id="9w4-8J-HOx"/>
8080
<constraint firstItem="F9F-0m-1GQ" firstAttribute="top" secondItem="fxB-Fv-MvE" secondAttribute="bottom" id="AzR-fj-xUA"/>
81-
<constraint firstAttribute="centerX" secondItem="fxB-Fv-MvE" secondAttribute="centerX" id="CfY-Fa-a3s"/>
8281
<constraint firstAttribute="trailing" secondItem="F9F-0m-1GQ" secondAttribute="trailing" id="HiW-DY-6TG"/>
8382
<constraint firstItem="ouD-TQ-VwT" firstAttribute="top" secondItem="Xh3-Vh-J7A" secondAttribute="top" id="hRS-0z-aId"/>
8483
<constraint firstAttribute="bottom" secondItem="F9F-0m-1GQ" secondAttribute="bottom" id="mlg-09-zer"/>
84+
<constraint firstItem="fxB-Fv-MvE" firstAttribute="leading" secondItem="Xh3-Vh-J7A" secondAttribute="leading" id="n3V-oa-tNW"/>
8585
<constraint firstAttribute="trailing" secondItem="WsX-Zf-Uz8" secondAttribute="trailing" id="rsI-H9-bdf"/>
8686
<constraint firstItem="WsX-Zf-Uz8" firstAttribute="leading" secondItem="Xh3-Vh-J7A" secondAttribute="leading" id="uF6-gC-uKA"/>
8787
<constraint firstAttribute="trailing" secondItem="ouD-TQ-VwT" secondAttribute="trailing" id="wBx-OU-vYd"/>
88+
<constraint firstAttribute="trailing" secondItem="fxB-Fv-MvE" secondAttribute="trailing" id="wzD-dA-Ymf"/>
8889
<constraint firstItem="WsX-Zf-Uz8" firstAttribute="top" secondItem="ouD-TQ-VwT" secondAttribute="bottom" id="ylu-Hk-kLH"/>
8990
</constraints>
9091
<size key="customSize" width="317" height="245"/>
@@ -94,14 +95,11 @@
9495
<outlet property="cellTopLabel" destination="ouD-TQ-VwT" id="3Aj-E6-WqQ"/>
9596
<outlet property="cellTopLabelHeightConstraint" destination="0ZN-cR-EKK" id="bQC-Ye-fW1"/>
9697
<outlet property="messageBubbleContainerView" destination="fxB-Fv-MvE" id="6O5-dp-zTi"/>
97-
<outlet property="messageBubbleContainerWidthConstraint" destination="ogF-G0-KfQ" id="qBz-mX-HPY"/>
9898
<outlet property="messageBubbleImageView" destination="fya-Xd-QVR" id="yhe-Bm-O3t"/>
9999
<outlet property="messageBubbleTopLabel" destination="WsX-Zf-Uz8" id="fuM-TF-lig"/>
100100
<outlet property="messageBubbleTopLabelHeightConstraint" destination="KIa-qy-yXS" id="WyG-oM-quS"/>
101101
<outlet property="textView" destination="DJt-qX-bTo" id="MIO-4O-wTY"/>
102-
<outlet property="textViewAvatarHorizontalSpaceConstraint" destination="giQ-io-uKL" id="FFW-G6-04i"/>
103102
<outlet property="textViewBottomVerticalSpaceConstraint" destination="axz-VT-hEB" id="BcZ-fK-AE2"/>
104-
<outlet property="textViewMarginHorizontalSpaceConstraint" destination="Vim-Mp-2J5" id="CWm-eA-5y3"/>
105103
<outlet property="textViewTopVerticalSpaceConstraint" destination="pev-xk-GyL" id="7MG-mA-uwy"/>
106104
</connections>
107105
<point key="canvasLocation" x="371" y="145"/>

0 commit comments

Comments
 (0)