>

사용자 정의보기가 있으며 테이블보기 셀에서 찾은 공개 표시기를 모방하려고합니다. 이게 가능해 ? 어쨌든 그 이미지를 추출 할 수 있습니까?


  • 답변 # 1

    투명한 배경을 사용해야합니다

    포토샵 파일에서 얻을 수있는 최고의 일치 항목은 다음과 같습니다.

    여기에는 스크린 샷 아래의 실제 iOS 이미지가 레이어로 포함되어 있으므로 비교할 수 있습니다.

    http://www.filedropper.com/fakearrowiosnov2013psd

    <시간>

    VBK가 UITableView 컬렉션에서 단일 셰브론을 원하는 것 같습니다. '세부 정보공개'인 UIButton과는 다른 '공개 표시기'입니다.

    다음과 같은 것을 원한다고 생각합니다 :

    투명한 배경의 50x80입니다. 이 이미지를 버튼 또는 UIImageView 위에 사용하십시오. 버튼을 원하는 크기로 크기를 조정하십시오. Apple은 40x40 이상의 적중 목표를 권장합니다. 스토리 보드에서 크기를 10x16으로 조정했지만 투명 버튼 오버레이를 사용하므로 크기가 중요하지 않습니다.

    이미지 미러 : http://imgur.com/X00qn0Z.png

    <시간>

    그러나이은 정확하게 iOS7에서 사용 된 이미지가 아닙니다. (2013 년 11 월) 정확한 이미지를 얻으려면 시뮬레이터에서 망막에서 앱을 실행하고 스크린 샷을 만드십시오.

  • 답변 # 2

    이것은 UITableViewCell 를 배치하여 코드로 완전히 수행 할 수 있습니다.   UIButton 내 공개 표시기와 함께 :

    UITableViewCell *disclosure = [[UITableViewCell alloc] init];
    disclosure.frame = button.bounds;
    disclosure.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    disclosure.userInteractionEnabled = NO; 
    [button addSubview:disclosure];
    
    

    스위프트 :

    let disclosure = UITableViewCell()
    disclosure.frame = button.bounds
    disclosure.accessoryType = .disclosureIndicator
    disclosure.isUserInteractionEnabled = false
    button.addSubview(disclosure)
    
    

  • 답변 # 3

    Apple에서 다양한 도구에 대한 공식 iOS 디자인 리소스를 제공하므로 거기에서 쉐브론을 추출 할 수 있습니다.

    <시간> 업데이트

    Apple은 WWDC'19 기조 연설에서 아이콘 글꼴 SF Symbols를 발표했습니다.

    SF Symbols 컴패니언 앱에는 chevron.right 라는 아이콘이 있습니다.  사용할 준비가되었습니다. 아이콘의 두께를 지정할 수도 있습니다.

  • 답변 # 4

    그것을 좋아하는 것은 UIBezierPath 사용 . 이를 통해 선명도를 잃지 않고 원하는 경우 크기를 조정할 수 있습니다. 또한 사진 편집기없이 필요한 경우 나중에 색상을 변경할 수있는 기회를 제공합니다. 원칙은 일반적이며 주어진 경로에 적용 할 수 있습니다. 사용법은 매우 간단합니다 :

    //suppose we want to apply disclosure arrow image to this button:
    @IBOutlet weak var btnDisclosure: UIButton!
    
    

    지금해야 할 일은 :

    //get an image from UIBezierPath, resize it for the button and stroke with white:
    let arrowImage = UIImage.imageWithBezierPath(UIBezierPath.disclosureArrowPath().scaleToAspectFitRect(CGRect(x: 0, y: 0, width: 22, height: 22)), fillColor: UIColor.clearColor(), strokeColor: UIColor.whiteColor())
    //assign disclosure arrow image to the button:
    btnDisclosure.setImage(arrowImage, forState: .Normal)
    
    

    공개 버튼처럼 보이는 UIBezierPath를 그리기위한 코드 :

    extension UIBezierPath
    {
        ///Disclosure arrow path. Use scaleToAspectFitRect to resize it to any given rect.
        class func disclosureArrowPath() -> UIBezierPath
        {
            //// arrow Drawing
            let arrowPath = UIBezierPath()
            arrowPath.moveToPoint(CGPointMake(4, 4))
            arrowPath.addLineToPoint(CGPointMake(26.5, 25.24))
            arrowPath.addLineToPoint(CGPointMake(4, 47.5))
            arrowPath.lineWidth = 3
            return arrowPath
        }  
        ///Makes a path scalable to any size.
        ///- parameter newRect: The path will be resized to aspect fit into this rectangle.
        func scaleToAspectFitRect(newRect: CGRect) -> UIBezierPath
        {
            var scaleFactor : CGFloat = 1.0
            //this is probably only the case of scale factor < 1:
            if bounds.width > bounds.height
            {
                //fit witdth:
                scaleFactor = newRect.width/bounds.width
            }
            else
            {
                //fit height:
                scaleFactor = newRect.height/bounds.height
            }
            //scale to aspect fill rect:
            self.applyTransform(CGAffineTransformMakeScale(scaleFactor, scaleFactor))
            return self
        }
    }
    
    

    다음으로 UIImage 를 얻는 방법이 필요합니다   UIBezierPath 에서 . 다시 한 번 UIImage에 다음과 같이 확장을 추가 할 수 있습니다.

    extension UIImage
    {
        ///Custom fill and stroke colours for our image based on UIBezierPath
        class func imageWithBezierPath(path: UIBezierPath, fillColor: UIColor, strokeColor: UIColor) -> UIImage
        {
            //enlarge the rect so that stroke line is not clipped:
            let rect = CGRectInset(path.bounds, -path.lineWidth / 2, -path.lineWidth / 2)
            UIGraphicsBeginImageContextWithOptions(rect.size, false, 0.0) //size of the image, opaque, and scale (set to screen default with 0)
            let bezierLayer = CAShapeLayer()
            bezierLayer.path = path.CGPath;
            bezierLayer.fillColor = fillColor.CGColor
            bezierLayer.strokeColor = strokeColor.CGColor
            bezierLayer.lineWidth = path.lineWidth;
            let imgViewTmp = UIImageView(frame: path.bounds)
            imgViewTmp.layer.addSublayer(bezierLayer);
            imgViewTmp.layer.renderInContext(UIGraphicsGetCurrentContext()!)
            let image = UIGraphicsGetImageFromCurrentImageContext()
            //UIGraphicsEndImageContext()
            return image
        }
    }
    
    

    이 특정 작업에는 과도한 것으로 보일 수 있지만 일반적입니다. 크기 조정을 많이하고 올바른 디자인 등을 알아 내려고하면 정말 편리합니다.

  • 답변 # 5

    이 Xcode 프로젝트 (https : // github)를 사용하여 Xcode Simulator에서 그래픽 이미지를 추출 할 수 있습니다. com/0xced/iOS-Artwork-Extractor

  • 이전 필터링 된 열에서 첫 번째 n % 표시 행의 합계를 계산하는 Excel 수식
  • 다음 vb6 - 암호화 및 암호 해독시 XOR 암호화로 다른 결과 제공