Yuvarlatılmış köşeleri olan bir UIImage
veya UIImageView
oluşturmak mümkün mü? Çünkü bir UIImage
almak ve bir UIImageView
içinde göstermek istiyorum, ama nasıl yapacağımı bilmiyorum.IOS: yuvarlatılmış köşeleri olan bir UIImage veya UIImageView oluşturun
cevap
Evet, bu mümkün.
QuartzCore
(#import <QuartzCore/QuartzCore.h>
) üstbilgisini içe aktarın ve UIImageView
ürününün layer
özelliği ile oynayın.
yourImageView.layer.cornerRadius = yourRadius;
yourImageView.clipsToBounds = YES;
Daha fazla bilgi için CALayer sınıf başvurusuna bakın.
Bu mümkündür, ancak yuvarlak köşeli saydam png görüntü (maske) oluşturmanızı ve UIImageView ile görüntünün üzerine yerleştirmenizi tavsiye ederim. Daha hızlı bir çözüm olabilir (örneğin, animasyonlara veya kaydırmaya ihtiyacınız varsa).
i görünümü ihtiva işin merkezinde benim yuvarlak avatar ayarlamak nasıl İşte 3
func makeRoundedImage(image: UIImage, radius: Float) -> UIImage {
var imageLayer = CALayer()
imageLayer.frame = CGRect(x: 0, y: 0, width: image.size.width, height: image.size.height)
imageLayer.contents = image.cgImage
imageLayer.masksToBounds = true
imageLayer.cornerRadius = radius
UIGraphicsBeginImageContext(image.size)
imageLayer.render(in: UIGraphicsGetCurrentContext())
var roundedImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return roundedImage
}
Çok basit ve kullanımı kolay. Zamanımı kurtarıyor. Teşekkür ederim. –
uiimageview.layer.cornerRadius = uiimageview.frame.size.height/2;
uiimageview.clipToBounds = YES;
#import <QuartzCore/QuartzCore.h>
-(UIImage *)makeRoundedImage:(UIImage *) image
radius: (float) radius;
{
CALayer *imageLayer = [CALayer layer];
imageLayer.frame = CGRectMake(0, 0, image.size.width, image.size.height);
imageLayer.contents = (id) image.CGImage;
imageLayer.masksToBounds = YES;
imageLayer.cornerRadius = radius;
UIGraphicsBeginImageContext(image.size);
[imageLayer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *roundedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return roundedImage;
}
Swift Objective-C:
-(void)setRoundedAvatar:(UIImageView *)avatarView toDiameter:(float)newSize atView:(UIView *)containedView;
{
avatarView.layer.cornerRadius = newSize/2;
avatarView.clipsToBounds = YES;
avatarView.frame = CGRectMake(0, 0, newSize, newSize);
CGPoint centerValue = CGPointMake(containView.frame.size.width/2, containedView.frame.size.height/2);
avatarView.center = centerValue;
}
bu deneyin Kod Yuvarlak Görüntü İthalat QuartzCore çerçeve
imageView.layer.backgroundColor=[[UIColor clearColor] CGColor];
imageView.layer.cornerRadius=20;
imageView.layer.borderWidth=2.0;
imageView.layer.masksToBounds = YES;
imageView.layer.borderColor=[[UIColor redColor] CGColor];
bu görüntü View yuvarlatılmış köşeler almaya çalışın ve aynı zamanda köşe renklendirmek için Yuvarlak Resmi oluşturmak için basit bir yolu:
imageView.layer.cornerRadius = imageView.frame.size.height/2;
imageView.layer.masksToBounds = YES;
imageView.layer.borderColor = [UIColor colorWithRed:148/255. green:79/255. blue:216/255. alpha:1.0].CGColor;
imageView.layer.borderWidth=2;
Durum *: Görüntünün yüksekliği ve genişliği, köşeleri yuvarlatmak için aynı olmalıdır.
# import QuartzCore framework
imageView.layer.cornerRadius=imgvwUser.frame.size.width/2;
imageView.layer.masksToBounds = YES;
Görüntünün yüksekliği ve genişliği, yuvarlatılmış köşeler elde etmek için aynı olmalıdır. cornerRadius
ve clipsToBounds
Ayar
// UIImageView+OSExt.h
#import <UIKit/UIKit.h>
@interface UIImageView (OSExt)
- (void)setBorder:(CGFloat)borderWidth color:(UIColor*)color;
@end
// UIImageView+OSExt.m
#import "UIImageView+OSExt.h"
@implementation UIImageView (OSExt)
- (void)layoutSublayersOfLayer:(CALayer *)layer
{
for (CALayer *sub in layer.sublayers)
{
if (YES == [sub.name isEqual:@"border-shape"])
{
CGFloat borderHalf = floor([(CAShapeLayer*)sub lineWidth] * .5);
sub.frame = layer.bounds;
[sub setBounds:CGRectInset(layer.bounds, borderHalf, borderHalf)];
[sub setPosition:CGPointMake(CGRectGetMidX(layer.bounds),
CGRectGetMidY(layer.bounds))];
}
}
}
- (void)setBorder:(CGFloat)borderWidth color:(UIColor*)color
{
assert(self.frame.size.width == self.frame.size.height);
for (CALayer *sub in [NSArray arrayWithArray:self.layer.sublayers])
{
if (YES == [sub.name isEqual:@"border-shape"])
{
[sub removeFromSuperlayer];
break;
}
}
CGFloat borderHalf = floor(borderWidth * .5);
self.layer.cornerRadius = self.layer.bounds.size.width * .5;
CAShapeLayer *circleLayer = [CAShapeLayer layer];
self.layer.delegate = (id<CALayerDelegate>)self;
circleLayer.name = @"border-shape";
[circleLayer setBounds:CGRectInset(self.bounds, borderHalf, borderHalf)];
[circleLayer setPosition:CGPointMake(CGRectGetMidX(self.layer.bounds),
CGRectGetMidY(self.layer.bounds))];
[circleLayer setPath:[[UIBezierPath bezierPathWithOvalInRect:circleLayer.bounds] CGPath]];
[circleLayer setStrokeColor:color.CGColor];
[circleLayer setFillColor:[UIColor clearColor].CGColor];
[circleLayer setLineWidth:borderWidth];
{
circleLayer.shadowOffset = CGSizeZero;
circleLayer.shadowColor = [[UIColor whiteColor] CGColor];
circleLayer.shadowRadius = borderWidth;
circleLayer.shadowOpacity = .9f;
circleLayer.shadowOffset = CGSizeZero;
}
// Add the sublayer to the image view's layer tree
[self.layer addSublayer:circleLayer];
// old variant
//CALayer *layer = self.layer;
//layer.masksToBounds = YES;
//layer.cornerRadius = self.frame.size.width * 0.5;
//layer.borderWidth = borderWidth;
//layer.borderColor = color;
}
@end
Bu görüntü biraz sınırını geçerek kanlar akıyor. Bunun için kolay bir düzeltme olup olmadığından emin değilim… –
kenarlığı geliştirildi –
Bunu yapmak için doğru bir yoldur. Ancak, görünümün boyutu değişirse, yarıçap güncellenmez. Doğru boyutlandırma ve animasyon davranışını elde etmek için, bir UIImageView
alt sınıf oluşturmanız gerekir.UIBeizerPath # Swift-3 & & #imageExtension ile
class RoundImageView: UIImageView {
override var bounds: CGRect {
get {
return super.bounds
}
set {
super.bounds = newValue
setNeedsLayout()
}
}
override func layoutSubviews() {
super.layoutSubviews()
layer.cornerRadius = bounds.width/2.0
clipsToBounds = true
}
}
daire
class ViewController: UIViewController {
@IBOutlet weak var imageOutlet: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
let image = UIImage(named: "IMG_0001.JPG")
if let image = image {
let renderimage = image.imageCroppingBezierPath(path: UIBezierPath(arcCenter: CGPoint(x:image.size.width/2,y:image.size.width/2) , radius: 200, startAngle: 0, endAngle: (2 * CGFloat(M_PI)), clockwise: true))
imageOutlet.image = renderimage
}
}
}
extension UIImage {
func imageCroppingBezierPath(path:UIBezierPath) ->UIImage {
let frame = CGRect(x: 0, y: 0, width: self.size.width, height: self.size.height)
//Defining a graphic context to paint on
UIGraphicsBeginImageContextWithOptions(self.size, false, 0.0)
//Get the current graphics context (if it exists)
let context = UIGraphicsGetCurrentContext()
//save the current graphic context
context?.saveGState()
// clipping area
path.addClip()
self.draw(in: frame)
//To extract an image from our canvas
let image = UIGraphicsGetImageFromCurrentImageContext()
//restore graphic context
context?.restoreGState()
//remove current context from stack
UIGraphicsEndImageContext()
return image!
}
}
layer.cornerRadius = imageviewHeight/2
layer.masksToBounds = true
- 1. Köşeleri yuvarlatılmış köşelerle ve kenarlarla UIImage yapın
- 2. Yuvarlatılmış prototip köşeleri iOS9.2
- 3. Yuvarlatılmış köşeleri olan MFC'de nasıl bir ilerleme denetimi oluştururum?
- 4. Antialiased yuvarlatılmış köşeleri Android'de ImageView
- 5. Alma UIImage UIImageView Swift
- 6. Saydam yuvarlatılmış köşelere sahip UIImage
- 7. NSBezierPath yuvarlatılmış köşenin kötü köşeleri var
- 8. UIImageView Dönüştürme Koordinatları UIImage Koordinatları
- 9. iOS, UIImageView
- 10. Bir UIImageView IOS biçiminde çizim Çizim
- 11. UIImage, UIImage URL'den yüklendiğinde UITableViewCell'de UIImageView Boyutunu Ayarla?
- 12. IOS 7 ile UIImageView görünmüyor
- 13. WPF'de yuvarlak köşeleri olan kesikli kenarları nasıl oluştururum?
- 14. Görüntü dosyasının bir bölümünü içeren UIImageView oluşturun
- 15. iOS UITableViewCell cell.imageView ayarı yuvarlatılmış köşe
- 16. Köşeleri yuvarlatılmış köşeler, düz kenarlık ve parlaklık efekti
- 17. iOS UIImage yollara klip
- 18. Belirli bir açıyla UIImage veya UIView döndürün, iOS için
- 19. UIImageView
- 20. UIImageView
- 21. CGImage (veya UIImage) bir CALayer
- 22. Simgenin köşeleri yuvarlanmışsa benim app reddedilir mi?
- 23. Silverlight'ta Üst (veya Alt) Yuvarlak Dikdörtgen Köşeleri Nasıl Yapılır?
- 24. iOS: UIBezierPath kullanarak bir UIImage maskeleme
- 25. Değişken boyut genişliği olan yuvarlatılmış köşeli NSButton
- 26. UIImage kenarlığı ayarlama
- 27. Bir daire içine UIImage kesiyor
- 28. iOS Çevir UIImageView 180 derece (animasyonlu değil)
- 29. UIImage (animasyon değil) üzerinde soluk bir köşeler/kenarlar oluşturun
- 30. Kare set kullanılarak yuvarlatılmış köşelere sahip UIButtonBackgroundImage
Tamam bir UIImageView için çalışıyorum ancak bu UIImageView'ı bir UIImage içine koyarsam işe yaramıyor, nasıl çözebilirim? – CrazyDev
'clipToBounds''u etkinleştirmeyi unutmayın. 'yourImageView.clipsToBounds = YES;' – yinkou
ImageView, scrollView veya tableView hücresiyse, clipToTounds, kötü kaydırma performansı sağlar. – OzBoz