diff --git a/Classes/Base.lproj/CallView.xib b/Classes/Base.lproj/CallView.xib
index 5f8e54a36..fd1c1707f 100644
--- a/Classes/Base.lproj/CallView.xib
+++ b/Classes/Base.lproj/CallView.xib
@@ -63,7 +63,7 @@
-
+
diff --git a/Classes/Base.lproj/ContactDetailsView.xib b/Classes/Base.lproj/ContactDetailsView.xib
index 6690ef02b..60ee7377c 100644
--- a/Classes/Base.lproj/ContactDetailsView.xib
+++ b/Classes/Base.lproj/ContactDetailsView.xib
@@ -283,7 +283,7 @@
-
+
diff --git a/Classes/Base.lproj/HistoryDetailsView.xib b/Classes/Base.lproj/HistoryDetailsView.xib
index 25bcadff9..92909a139 100644
--- a/Classes/Base.lproj/HistoryDetailsView.xib
+++ b/Classes/Base.lproj/HistoryDetailsView.xib
@@ -203,7 +203,7 @@
-
+
@@ -217,7 +217,7 @@
-
+
@@ -290,7 +290,7 @@
-
+
diff --git a/Classes/HistoryDetailsView.m b/Classes/HistoryDetailsView.m
index ebf463cbd..82a7326d9 100644
--- a/Classes/HistoryDetailsView.m
+++ b/Classes/HistoryDetailsView.m
@@ -64,6 +64,7 @@ static UICompositeViewDescription *compositeDescription = nil;
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
+ [self update];
[_tableView loadDataForAddress:(callLog ? linphone_call_log_get_remote_address(callLog) : NULL)];
[[NSNotificationCenter defaultCenter] addObserver:self
diff --git a/Classes/LinphoneUI/UICompositeView.m b/Classes/LinphoneUI/UICompositeView.m
index 14426b4f4..8623f15c8 100644
--- a/Classes/LinphoneUI/UICompositeView.m
+++ b/Classes/LinphoneUI/UICompositeView.m
@@ -285,7 +285,11 @@
- (void)clearCache:(NSArray *)exclude {
for (NSString *key in [viewControllerCache allKeys]) {
bool remove = true;
- if (exclude != nil) {
+
+ /*ImagePickerView can be used as popover and we do NOT want to free it*/;
+ if ([key isEqualToString:ImagePickerView.compositeViewDescription.content]) {
+ remove = false;
+ } else if (exclude != nil) {
for (UICompositeViewDescription *description in exclude) {
if ([key isEqualToString:description.content] || [key isEqualToString:description.statusBar] ||
[key isEqualToString:description.tabBar] || [key isEqualToString:description.sideMenu]) {
diff --git a/Classes/LinphoneUI/UIRoundedImageView.m b/Classes/LinphoneUI/UIRoundedImageView.m
index b27419d99..2bed32d38 100644
--- a/Classes/LinphoneUI/UIRoundedImageView.m
+++ b/Classes/LinphoneUI/UIRoundedImageView.m
@@ -16,18 +16,17 @@
INIT_WITH_COMMON {
borderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
+ borderView.layer.borderWidth = 10;
+ borderView.layer.borderColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"color_A.png"]].CGColor;
borderView.hidden = YES;
[self addSubview:borderView];
+ [self setBordered:NO];
[self setRoundRadius];
- [self setBordered:YES];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(orientationDidChange:)
name:@"UIDeviceOrientationDidChangeNotification"
object:nil];
-
- // self.layer.borderWidth = 1;
- // self.layer.borderColor = [UIColor redColor].CGColor;
return self;
}
@@ -37,6 +36,7 @@ INIT_WITH_COMMON {
- (void)orientationDidChange:(NSNotification *)k {
[self setRoundRadius];
+ [self layoutSubviews];
}
- (void)setImage:(UIImage *)image {
@@ -45,36 +45,36 @@ INIT_WITH_COMMON {
- (void)setImage:(UIImage *)image bordered:(BOOL)bordered withRoundedRadius:(BOOL)rounded {
// We have to scale image to layers limits so that when we round image, we have a proper circle
- [super setImage:[image scaleToSize:self.frame.size squared:YES]];
+ [super setImage:image];
[self setBordered:bordered];
[self setRoundRadius];
}
- (void)setBordered:(BOOL)bordered {
borderView.hidden = !bordered;
- if (bordered) {
- CGRect frame = self.frame;
- frame.size.height = frame.size.width = MIN(self.layer.frame.size.height, self.layer.frame.size.width);
- frame.origin.x = (self.frame.size.width - frame.size.width) / 2;
- frame.origin.y = (self.frame.size.height - frame.size.height) / 2;
- borderView.frame = frame;
- self.layer.borderWidth = 10;
- // [borderView.layer setCornerRadius:frame.size.height / 2];
- self.layer.borderColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"color_A.png"]].CGColor;
- } else {
- self.layer.borderWidth = 0;
- }
}
-
+- (CGRect)computeBox {
+ CGFloat min = MIN(self.frame.size.width, self.frame.size.height);
+ CGRect box = CGRectMake((self.frame.size.width - min) / 2, (self.frame.size.height - min) / 2, min, min);
+ return box;
+}
- (void)setRoundRadius {
- CALayer *imageLayer = self.layer;
+ CGRect box = [self computeBox];
- CGFloat height = imageLayer.frame.size.height;
- CGFloat width = imageLayer.frame.size.width;
- CGFloat roundRadius = MIN(width, height) / 2;
+ borderView.frame = box;
+ borderView.layer.cornerRadius = borderView.frame.size.height / 2;
- [imageLayer setCornerRadius:roundRadius];
- [imageLayer setMasksToBounds:YES];
+ CGPathRef path = CGPathCreateWithEllipseInRect(box, NULL);
+ UIBezierPath *maskPath = [UIBezierPath bezierPathWithCGPath:path];
+ CAShapeLayer *maskLayer = [CAShapeLayer layer];
+ maskLayer.frame = self.bounds;
+ maskLayer.path = maskPath.CGPath;
+ self.layer.mask = maskLayer;
}
+- (void)layoutSubviews {
+ [super layoutSubviews];
+ borderView.frame = [self computeBox];
+ borderView.layer.cornerRadius = borderView.frame.size.height / 2;
+}
@end
diff --git a/Classes/Utils/Utils.m b/Classes/Utils/Utils.m
index c8a894729..673255747 100644
--- a/Classes/Utils/Utils.m
+++ b/Classes/Utils/Utils.m
@@ -500,8 +500,9 @@ void linphone_iphone_log_handler(int lev, const char *fmt, va_list args) {
size.width = size.height = MAX(size.width, size.height);
}
- UIGraphicsBeginImageContext(scaledImage.size);
- [scaledImage drawInRect:CGRectMake(0, 0, scaledImage.size.width, scaledImage.size.height)];
+ UIGraphicsBeginImageContext(size);
+
+ [scaledImage drawInRect:CGRectMake(0, 0, size.width, size.height)];
scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();