programing

UI 보기의 배경 이미지를 채우는 방법

padding 2023. 8. 31. 23:42
반응형

UI 보기의 배경 이미지를 채우는 방법

나는 있습니다.UIView배경 이미지를 다음과 같이 설정했습니다.

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"sfond-appz.png"]];

문제는 배경 이미지가 보기의 중심에 있지 않지만, 모든 보기를 채우기 위해 때때로 재생된다는 것입니다.화면 크기를 맞추기 위해 uview 내부의 이미지를 중앙에 두고 스크레치하는 방법이 있습니까?

참고: 사용할 수 없습니다.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개괄적으로인터페이스 작성기에 모든 것이 올바르게 연결되어 있는지 확인하고 스크롤 보기의 배경색을 투명하게 만듭니다.

이것은 미래의 변화를 위한 가장 단순하고 유연한 IMHO 디자인입니다.

반복:

UIImage *img = [UIImage imageNamed:@"bg.png"];
view.backgroundColor = [UIColor colorWithPatternImage:img];

늘어난

UIImage *img = [UIImage imageNamed:@"bg.png"];
view.layer.contents = img.CGImage;

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!)
    }

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)

UIGraphicsBeginImageContext 메서드를 사용하여 이미지의 크기를 보기의 크기와 동일하게 설정할 수 있습니다.

구문: void UIGraphics 이미지 컨텍스트 시작(CGS 크기);

 #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)

표시된 답변은 괜찮지만 이미지가 늘어납니다.저의 경우에는 늘지 않고 반복하고 싶은 작은 타일 이미지가 있었습니다.그리고 검은색 배경 문제를 해결할 수 있는 가장 좋은 방법은 다음 코드였습니다.

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 솔루션:

@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

반응형