2015-02-24 3 views
0

Я работаю в Xcode Version 6.1.1 и iOS 8.1 для разработки своего приложения, в котором мне нужны круглые верхние левые и верхние правые углы в представлении изображения в соответствии с дизайном.Селективные круглые углы в представлении изображений - iOS

Я использовал следующий код перед, и он правильно работает в предыдущих версиях Xcode:

UIImageView *locationImage = (UIImageView *)[cell viewWithTag:101]; 

UIBezierPath *maskPath1; 

maskPath1 = [UIBezierPath bezierPathWithRoundedRect:locationImage.bounds 
            byRoundingCorners:(UIRectCornerTopRight | UIRectCornerTopLeft) 
             cornerRadii:CGSizeMake(5.0, 5.0)]; 
CAShapeLayer *maskLayer1 = [[CAShapeLayer alloc] init]; 
maskLayer1.frame = locationImage.bounds; 
maskLayer1.path = maskPath1.CGPath; 
locationImage.layer.mask = maskLayer1; 

Теперь я левый верхний угол округлый, но не правильный. Я знаю, что код правильный, потому что, если я применяю его к виду с ограниченным изображением, он работает хорошо, но мне нужно ограничить элементы представлением. Я использую автомат.

ссылку на изображение: https://www.dropbox.com/s/orisd8gzbdhsr4z/round-corners.tiff?dl=0

Там что-то я делаю не так? Как я могу обойти два угла правильно?

Заранее спасибо

* Извините за мой английский

+0

возможный дубликат [Round некоторых углов UIView и вокруг границы слоя вида по слишком] (http://stackoverflow.com/questions/14866450/round-some -corners-of-uiview-and-round-the-view-s-layer-s-border-too) –

+0

Спасибо за предложение, но связанное с ним сообщение использует тот же код для округления углов, просто добавьте штрих (который я не нужно), и работает так же: просто округляя верхний левый угол. – cmacera

ответ

0

Наконец я нашел решение гнездящегося на UIImageView в пользовательском интерфейсе просмотр с угловым радиусом, установленным в атрибутах Runtime User Defined Runtime и настройке cliptobounds этого uiview на yes.

Если кто-то нуждается в дальнейшем объяснении, я дам восторженную

1

@jcmartinac,

вы можете использовать это решение - how to set cornerRadius for only top-left and top-right corner of a UIView?

в вашем коде применить этот код, я испытал , его работа отлично.

maskPath1 = (UIImageView *)[self roundCornersOnView: maskPath1 onTopLeft:YES topRight:YES bottomLeft:NO bottomRight:NO radius:20.0]; 

// использовать ниже метод настройки Corner Radius раунд ..

-(UIView *)roundCornersOnView:(UIView *)view onTopLeft:(BOOL)tl topRight:(BOOL)tr bottomLeft:(BOOL)bl bottomRight:(BOOL)br radius:(float)radius { 

    if (tl || tr || bl || br) { 
     UIRectCorner corner = 0; //holds the corner 
     //Determine which corner(s) should be changed 
     if (tl) { 
      corner = corner | UIRectCornerTopLeft; 
     } 
     if (tr) { 
      corner = corner | UIRectCornerTopRight; 
     } 
     if (bl) { 
      corner = corner | UIRectCornerBottomLeft; 
     } 
     if (br) { 
      corner = corner | UIRectCornerBottomRight; 
     } 

     UIView *roundedView = view; 
     UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:roundedView.bounds byRoundingCorners:corner cornerRadii:CGSizeMake(radius, radius)]; 
     CAShapeLayer *maskLayer = [CAShapeLayer layer]; 
     maskLayer.frame = roundedView.bounds; 
     maskLayer.path = maskPath.CGPath; 
     roundedView.layer.mask = maskLayer; 
     return roundedView; 
    } else { 
     return view; 
    } 

} 

///////////// Для Tableview использования ниже код в методе cellForRowAtIndexPath /// //

- (UITableViewCell *)tableView:(UITableView *)tableView 
     cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    cell.Img_thumb=(UIImageView *)[self roundCornersOnView: cell.Img_thumb onTopLeft:YES topRight:YES bottomLeft:NO bottomRight:NO radius:20.0]; 
} 

Check скриншот: ->Effect on Table

+0

Спасибо за помощь! К сожалению, он работает так же, как раньше ... Испытывая код, я понял, что работает только верхний левый угол, если я пытаюсь обойти любой другой, он ничего не делает. Я полностью потерял – cmacera

+0

ок. keep coding .. ;-) – Mehul

+0

Я видел, что ваш код работает внутри uiviewcontroller, но я использую uitableviewcontroller и когда он не работает. Вы пробовали его в iiimageview внутри ячейки в uitableview? Я думаю, проблема в uitableview – cmacera

Смежные вопросы