UIView의 배경 이미지를 채우는 방법
나는 UIView
이 방식으로 배경 이미지를 설정했습니다.
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"sfond-appz.png"]];
내 문제는 배경 이미지가 뷰의 중앙에 있지 않지만 모든 뷰를 채우기 위해 몇 번 재생된다는 것입니다. uiview 내부에 이미지를 중앙에 배치하고 화면 크기를 조정하는 방법이 있습니까?
참고 : UIImageView
배경에 사용할 수 없습니다 scrollview
.
중앙에 늘어난 이미지를 만들려면 미리 이미지를 처리해야합니다. 이 시도:
UIGraphicsBeginImageContext(self.view.frame.size);
[[UIImage imageNamed:@"image.png"] drawInRect:self.view.bounds];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
self.view.backgroundColor = [UIColor colorWithPatternImage:image];
들어 스위프트 이것을 사용 ...
UIGraphicsBeginImageContext(self.view.frame.size)
UIImage(named: "ImageName.png")?.draw(in: self.view.bounds)
if let image = UIGraphicsGetImageFromCurrentImageContext(){
UIGraphicsEndImageContext()
self.view.backgroundColor = UIColor(patternImage: image)
}else{
UIGraphicsEndImageContext()
debugPrint("Image not available")
}
이 colorWithPattern:
방법은 실제로 이미지에서 패턴을 생성하는 것입니다. 따라서 필요한 사용자 정의가 불가능할 가능성이 높으며 그렇게 할 수도 없습니다.
실제로 UIImageView
이미지를 중앙에 배치하고 크기를 조정하려면를 사용해야합니다 . 당신이 가지고 있다는 사실 UIScrollView
이 이것을 막지는 않습니다.
확인 self.view
후 모두 추가, 일반적인 전망 UIImageView
과를 UIScrollView
파단한다. Interface Builder에서 모두 올바르게 연결되어 있는지 확인하고 스크롤 뷰의 배경색을 투명하게 만드십시오.
이것은 IMHO가 미래의 변화를위한 가장 간단하고 유연한 디자인입니다.
반복:
UIImage *img = [UIImage imageNamed:@"bg.png"];
view.backgroundColor = [UIColor colorWithPatternImage:img];
뻗어
UIImage *img = [UIImage imageNamed:@"bg.png"];
view.layer.contents = img.CGImage;
Swift 2.1의 경우 이것을 사용하십시오 ...
UIGraphicsBeginImageContext(self.view.frame.size)
UIImage(named: "Cyan.jpg")?.drawInRect(self.view.bounds)
let image: UIImage! = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
self.view.backgroundColor = UIColor(patternImage: image)
Swift 4 에서하는 올바른 방법 , 화면 크기와 같은 프레임이 올바른 경우 다른 곳에 두십시오. viewDidLayoutSubviews
실제 프레임을 가져올 수 있으므로 이것을 작성하는 것이 중요합니다 .viewDidLayoutSubviews
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
UIGraphicsBeginImageContext(view.frame.size)
UIImage(named: "myImage")?.draw(in: self.view.bounds)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
view.backgroundColor = UIColor.init(patternImage: image!)
}
UIGraphicsBeginImageContext 메서드를 사용하여보기와 동일한 이미지 크기를 설정할 수 있습니다 .
구문 : void UIGraphicsBeginImageContext (CGSize size);
#define IMAGE(imageName) (UIImage *)[UIImage imageWithContentsOfFile:
[[NSBundle mainBundle] pathForResource:imageName ofType:IMAGE_TYPE_PNG]]
UIGraphicsBeginImageContext(self.view.frame.size);
[[UIImage imageNamed:@“MyImage.png"] drawInRect:self.view.bounds];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
self.view.backgroundColor = [UIColor colorWithPatternImage:IMAGE(@"mainBg")];
Swift 3.0의 경우 다음 코드를 사용하십시오.
UIGraphicsBeginImageContext(self.view.frame.size)
UIImage(named: "bg.png")?.drawAsPattern(in: self.view.bounds)
let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
self.view.backgroundColor = UIColor(patternImage: image)
The marked answer is fine, but it makes the image stretched. In my case I had a small tile image that I wanted repeat not stretch. And the following code was the best way for me to solve the black background issue:
UIImage *tileImage = [UIImage imageNamed:@"myTileImage"];
UIColor *color = [UIColor colorWithPatternImage:tileImage];
UIView *backgroundView = [[UIView alloc] initWithFrame:self.view.frame];
[backgroundView setBackgroundColor:color];
//backgroundView.alpha = 0.1; //use this if you want to fade it away.
[self.view addSubview:backgroundView];
[self.view sendSubviewToBack:backgroundView];
Swift 4 Solution :
@IBInspectable var backgroundImage: UIImage? {
didSet {
UIGraphicsBeginImageContext(self.frame.size)
backgroundImage?.draw(in: self.bounds)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
if let image = image{
self.backgroundColor = UIColor(patternImage: image)
}
}
}
참고URL : https://stackoverflow.com/questions/8077740/how-to-fill-background-image-of-an-uiview
'developer tip' 카테고리의 다른 글
두 CG 포인트 사이의 거리를 찾는 방법은 무엇입니까? (0) | 2020.11.09 |
---|---|
해결 실패 : Gradle을 사용하는 IntelliJ Idea의 com.google.android.gms : play-services (0) | 2020.11.09 |
Eclipse 용 PHP Mess Detector (0) | 2020.11.09 |
전처리 또는 후 처리 roxygen 스 니펫 (0) | 2020.11.09 |
iOS의 Delphi XE6 링크 C 코드 (0) | 2020.11.09 |